Nsdictionary格式问题

Nsdictionary Format issue

我有以下答案(来自服务器),格式如下,用于数据库中的答案列。

在应用程序端更新答案并将其保存到数据库时,它被修改为以下格式。(即,: 被 = 替换)我想保持相同的格式。有人可以让我知道问题出在哪里吗?我正在使用 NSDictionary 访问键值对,并将最终的 nsdictionary 分配给数据库。

NSDictionary 和包含 JSON 的 NSString 不是同一个对象,因此它们的格式不同。当您使用 NSLog 打印这些对象时,它会调用这些对象的描述方法。此方法 return NSString 的字符串和 NSDictionary 的特定格式字符串。

如果您想检索 JSON 格式,您需要再次将 NSDictionary 转换为 JSON 字符串,如下所示:

NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error];
NSString *strJson = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

if (error)
    NSLog(@"An error occured");

然后:

NSLog(@"%@", strJson);

我希望我的英语是可以理解的。不要犹豫,纠正我。

正如@Larme 指出的那样,-[NSDictionary description] 不 return JSON 表示字典。 NSArray 以类似的方式工作。

NSDictionary 的描述具有以下格式。

{
    key1 = value1;
    key2 = value2;
    ...
    keyN = valueN;
}

NSArray 的描述如下:

(
    object1,
    object2,
    ...
    objectN
)

为了从字典中获取 JSON,您应该使用 NSJSONSerialization(或第三方库)。

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:response options:0 error:nil];
//Use line below to see formatted JSON
//NSData *jsonData = [NSJSONSerialization dataWithJSONObject:response options:NSJSONWritingPrettyPrinted error:nil]; 
NSString *string = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

诀窍是在将其传递给 NSSTRING 之前进行 NSJSONSerialization

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:YOUR_OBJECT options:0 error:&error];


NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];