解析JSON单值数组变为字符串

时间:2013-11-27 07:44:32

标签: ios json parsing nsarray

我的iOS App中有一个本地.json文件。 看起来像这样:

{
  "books": [
  {
        "title": "Book 1",
        "category": ["z","y","w"]
  },
  {
        "title": "Book 2",
        "category": ["x"]
  }
 ]
}

我这样解析:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"books" ofType:@"json"];
NSError *error = nil;

NSData *JSONData = [NSData dataWithContentsOfFile:filePath options:NSDataReadingMappedIfSafe error:&errore];

NSDictionary *jsonDic = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableContainers error:&error];

当我打印字典时如果'category'数组只包含一个条目,它看起来就像一个字符串:

{
  books = (
   {
      title = "Book 1";
      category = (z,y,w)
   },
   {
     title = "Book 2";
     category = x
   }
 )
}

由于我需要循环遍历所有这些类别项目,我怎么能保持数组结构?即使是那些只有一个条目的人?

由于

编辑:我测试了不同的mac不同的xcode5并且正在运行!我想知道是否与某种设置有关?

2 个答案:

答案 0 :(得分:0)

当我运行此代码并查看jsonDic时,我得到了人们的期望:

(lldb) po jsonDic
{
    books =     (
                {
            category =             (
                z,
                y,
                w
            );
            title = "Book 1";
        },
                {
            category =             (
                x
            );
            title = "Book 2";
        }
    );
}

答案 1 :(得分:0)

当您打印像

这样的数组时
NSArray *arr = @[@"A",@"B"];
NSLog(@"%@",arr);

输出类似

2013-11-27 14:49:52.497 TestApp[1629:70b] (
    A,
    B
)

因此,当您传递字典时,NSLog给出的输出绝对正确。因此,您的category键的数组不是字符串(尽管它看起来像一个字符串)