0

次のような JSON オブジェクトを作成しようとしています。

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

これが私の試みです:

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",
                             0,@"security_level",
                             @"ios",@"device_type",
                             //No Email Provided, This is just for testing
                             blobString,@"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 userInfo] objectForKey:@"NSDebugDescription"]);
NSLog(@"%@",[[NSString alloc] initWithData:JSONRequestData encoding:NSUTF8StringEncoding]);

問題は、最後の NSLog が、私が作成したすべてが次のようなものであることを教えてくれることです:

{"request_type":"send_string"}

だから私が行ってこれをサーバーに書き込もうとすると

[NSJSONSerialization writeJSONObject:JSONRequestData toStream:outputStream options:0 error:&error];

コンソールから次のエラーが表示されます。

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

1 に答える 1

2

この行を置き換えます

0,@"security_level"

[NSNumber numberWithInt:0],@"security_level"
于 2012-08-13T08:14:27.753 に答える