Nsdictionary格式问题

时间:2017-06-14 08:46:00

标签: objective-c nsstring nsdictionary

我有以下答案(来自服务器),其格式为数据库中的答案列。enter image description here

在应用端更新答案并将其保存到数据库时,它会被修改为以下格式。(即:被替换为=)我想保持相同的格式。有人能告诉我这是什么问题吗?我使用NSDictionary访问键值对,并将最终的nsdictionary分配给DB。 enter image description here

3 个答案:

答案 0 :(得分:1)

NSDictionary和包含JSON的NSString不是同一个对象,因此它们不具有相同的格式。使用NSLog打印这些对象时,它会在这些对象上调用描述方法。此方法返回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);

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

答案 1 :(得分:1)

由于@Larme指向-[NSDictionary description]不返回字典的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];

答案 2 :(得分:1)

诀窍是在将NSJSONSerialization传递给NSSTRING之前有一个NSJSONSerialization

[\s\S]