Objective-C NSJSONSerialization JSONObjectWithData问题会更改JSON文本的格式

时间:2014-02-02 16:40:06

标签: objective-c json nsjsonserialization

我运行此代码示例

 NSString *st =@"{ \"Hello\" : [ {\"m\":\"m\"} ] }";

NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:[st dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];

我在dic中获得输出:

{
    Hello =     (
                {
            m = m;
        }
    );
}

将方括号“[”替换为“(”,,为什么??

2 个答案:

答案 0 :(得分:1)

JSON对数组使用方括号[ ... ],请参阅http://json.org

description的{​​{1}}方法使用括号NSArray来打印数组。 该格式在Old-Style ASCII Property Lists中描述。

您不能指望输出相等。另一个例子,JSON中的字符串总是用引号括起来:( ... )和“旧式ASCII属性列表”格式 省略没有空格的纯字母数字字符串的引号。

答案 1 :(得分:1)

这实际上没有改变任何东西,这只是格式化的问题。在Cocoa和ObjC中习惯用()表示数组,而不是javascript中使用的[]。例如,尝试:

NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
NSLog(@"%@", array);

你会看到:

2014-02-02 10:47:41.468 Untitled[2773:507] (  
    one,  
    two,  
    three  
)

NSArray只是用parens来形容自己。