来自NSArray的Keyless NSDictionary

时间:2013-11-27 09:34:51

标签: ios objective-c json cocoa nsdictionary

我正在尝试创建看起来像

的JSON
[
   {
      property1 = "test1",
      property2 = "test2",
   },
   {
      property1 = "test1",
      property2 = "test2",
   },
   ...
]

到目前为止,我只能使用NSDictionary:

[
   key1 = {
      property1 = "test1",
      property2 = "test2",
   },
   key 2 = {
      property1 = "test1",
      property2 = "test2",
   },
   ...
]

......这不好。在NSDictionary中创建无密钥数组有简单的方法吗?

2 个答案:

答案 0 :(得分:2)

尝试:

NSArray *objects = @[
    @{ @"property1": @"test1", @"property2": @"test2" },
    @{ @"property1": @"test1", @"property2": @"test2" }
];

NSError *error = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:objects options:0 error:&error];

您似乎使用NSDictionary作为根对象,而不是NSArray

答案 1 :(得分:2)

您的JSON无效。它应该是这样的JSON数组:

[
   {
      property1 : "test1",
      property2 : "test2",
   },
   {
      property1 : "test1",
      property2 : "test2",
   },
   ...
]

或嵌入了其他对象的JSON对象,但在这种情况下,您需要指定属性的名称:

{
   obj1 : {
      property1 : "test1",
      property2 : "test2",
   },
   obj2 : {
      property1 : "test1",
      property2 : "test2",
   },
   ...
}

第一个案例映射到NSDurray的NSArray,而第二个案例映射到带有两个键(obj1,obj2,)的NSDictionary,每个键映射到NSDictionary,每个键有两个键(property1,property2)。

根据对您的问题所做的编辑判断,您需要序列化此对象,以获得所需的结构:

NSArray * dataForJSON = @[
    @{
         @"property1" : @"test1", 
         @"property2" : @"test2"
     },        
    @{
         @"property1" : @"test1", 
         @"property2" : @"test2"
     }
];