ios - iOS 中的 JSON 错误 : Invalid top-level type in JSON write

标签 ios json

我无法解决这个错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSJSONSerialization writeJSONObject:toStream:options:error:]: Invalid top-level type in JSON write'

这与这段代码有关(基本上我正在创建一些 JSON 并将其发送到服务器)。我已经与服务器核实了套接字是否已打开,确实如此!

NSDictionary *blobData = [NSDictionary dictionaryWithObjectsAndKeys:
                          sendString,@"string",
                          nil];
NSString *blobString = [[NSString alloc]
                        initWithData:[NSJSONSerialization dataWithJSONObject:blobData options:kNilOptions error:&error]
                        encoding:NSUTF8StringEncoding];
NSLog(@"Blob Created: %@", blobString);
NSDictionary *requestData = [NSDictionary dictionaryWithObjectsAndKeys:
                             @"send_string",@"request_type",
                             [NSNumber numberWithInt:0],@"security_level",
                             @"ios",@"device_type",
                             //No Email Provided, This is just for testing
                             blobData,@"blob",
                             nil];

NSData *JSONRequestData = NULL;
if ([NSJSONSerialization isValidJSONObject:requestData]) {
    NSLog(@"Proper JSON Object");
    JSONRequestData = [NSJSONSerialization dataWithJSONObject:requestData options:kNilOptions error:&error];
}
else {
    NSLog(@"requestData was not a proper JSON object");
    return FALSE;
}
NSLog(@"Error:%@",[[error userInfo] objectForKey:@"NSDebugDescription"]);
NSLog(@"Contents of JSONRequestData: %@",[[NSString alloc] initWithData:JSONRequestData encoding:NSUTF8StringEncoding]);
[NSJSONSerialization writeJSONObject:JSONRequestData toStream:outputStream options:0 error:&error];

我是否创建了错误的 JSON 对象?也许我处理“blob”的方式有问题

这是我创建 JSONRequestData 后 NSLogs 打印的内容

{"security_level":"0","request_type":"send_string","device_type":"ios","blob":{"string":"hello"}}

最佳答案

writeJSONObject 期望您要发送的实际未序列化对象,因此在这种情况下您希望将 requestData 对象传递给它,而不是 JSONRequestData喜欢:

NSJSONSerialization writeJSONObject:requestData toStream:outputStream options:0 error:&error];

关于ios - iOS 中的 JSON 错误 : Invalid top-level type in JSON write,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11932894/

相关文章:

ios - 如何检测Facebook喜欢的按钮被点击?

ios - 将 NSArray 保存为 NSData

json - Node 服务器接收 XmlHttpRequest

ios - 我的 NSMutableArray 中的意外大括号

ios - WKWebView 不从特定页面加载图像

javascript - 嵌套jquery有大量数据

json - 如何根据数组中的值在JQ中选择项目

javascript - 如何将自定义路由移至 jsonServer 中的 server.js 之外

ios - Swift - 两个不同类的相同协议(protocol)

ios - 在相机 UIImagePickerController 中收到内存警告