String 在iOS5中创建JSONObject

String 在iOS5中创建JSONObject,string,json,ios5,nsstring,nsobject,String,Json,Ios5,Nsstring,Nsobject,似乎显示了如何创建JSONObject NSString *jsonString = @"[{\"id\": \"1\", \"name\":\"Aaa\"}, {\"id\": \"2\", \"name\":\"Bbb\"}]"; NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *e = nil; NSMutableArray *json = [NSJSONSerializatio

似乎显示了如何创建JSONObject

NSString *jsonString = @"[{\"id\": \"1\", \"name\":\"Aaa\"}, {\"id\": \"2\", \"name\":\"Bbb\"}]";
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *e = nil;
NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&e];
NSLog(@"%@", json);
输出看起来像一个json对象。但后来我尝试了以下方法:

NSLog(@"%@", [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:nil ]);
我得到的是

这似乎表明它不是一个真正的JSONObject。如何制作一个?

它可能是一个真正的JSONObject,但NSLog不知道如何显示原始数据。。。NSLog中的
“%@”
位需要一个带有编码的NSString,而不是NSData

有两种方法可以让我从头顶上看到事情是否进展顺利

#1) 使用该方法

#2) 重新解析您刚刚创建的JSON对象,看看它是否与您创建它的方式一致。您可以通过执行以下操作打印NSData:

NSError * error = nil;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:&error ];
if(jsonData == nil)
{
    NSLog( @"error in parsing json data is %@", [error localizedDescription] );
} else {
    NSString * jsonString = [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding];    
    NSLog( "json data is %@", jsonString );
}
它可能是一个真正的JSONObject,但NSLog不知道如何显示原始数据。。。NSLog中的
“%@”
位需要一个带有编码的NSString,而不是NSData

有两种方法可以让我从头顶上看到事情是否进展顺利

#1) 使用该方法

#2) 重新解析您刚刚创建的JSON对象,看看它是否与您创建它的方式一致。您可以通过执行以下操作打印NSData:

NSError * error = nil;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:&error ];
if(jsonData == nil)
{
    NSLog( @"error in parsing json data is %@", [error localizedDescription] );
} else {
    NSString * jsonString = [[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding];    
    NSLog( "json data is %@", jsonString );
}

如果我有一个NSStrings的NSArray,我如何将整个数组分配给一个键,然后将其转换为JSONobject?JSONobject只是一个NSArray?您可以通过
NSJSONSerialization
从数据或流(但不是数组或字典)创建JSON对象。您需要将数组转换为
NSData
,才能进行JSON转换。看看。如果我有一个NSString的NSArray,我如何将整个数组分配给一个键,然后将其转换为JSONobject?JSONobject只是一个NSArray?您可以通过
NSJSONSerialization
从数据或流(而不是数组或字典)创建JSON对象。您需要将数组转换为
NSData
,才能进行JSON转换。看一看。