在Objective C中创建JSON数组[重复]

Posted

技术标签:

【中文标题】在Objective C中创建JSON数组[重复]【英文标题】:Create JSON array in Objective C [duplicate] 【发布时间】:2013-11-18 08:14:13 【问题描述】:

我正在使用 Objective C 创建一个 JSON 数组。我以前从未这样做过,但我想做的是创建 JSON 数组,然后创建一个 JSON 对,用于在我的 NSURLConnection Post 正文中发回。

我知道如何制作和发送帖子正文。

NSData *data = // some stuff in here...

        [request setHTTPMethod:@"POST"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:[NSString stringWithFormat:@"%d", [data length]] forHTTPHeaderField:@"Content-Length"];
        [request setHTTPBody:data];

我首先如何创建 JSON 数组,然后如何制作 JSON 对?

【问题讨论】:

【参考方案1】:

使用苹果的 NSJSONSerialization

    NSArray *array = @[@"1",@"2",@"3"];
    NSData *json = [NSJSONSerialization dataWithJSONObject:array options:0 error:nil];

    //back
    array = [NSJSONSerialization JSONObjectWithData:json options:0 error:nil];

【讨论】:

【参考方案2】:

JSON 基本上是一个转换为 NSData 的 NSDictionary。我建议只使用 AFNetworking 框架,它以 NSDictionary 作为参数并自动将其转换为 JSON。

但是如果你想自己做转换,你可以使用apples NSJSONSerialization:

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestParam
                                                   options:NSJSONWritingPrettyPrinted
                                                     error:&error];

例如,如果你想发送一个数组,你可以这样做:

NSArray *requestArray = @[@"1",@"2"];
NSDictionary *requestDictionary = @@"Array": requestArray;

这将创建以下结构:

Array =     (
    1,
    2
);

如果您想稍后修改 requestDictionary(例如:添加额外的键和对象),您只需将其设置为可变并像使用 NSMutableDictionaries 一样使用它。

【讨论】:

你忘了对这些东西进行 JSON 编码。这根本不是 json 嗯,在某种程度上你是对的。这不是 JSON,这是 AFNetworking 方法的参数,我忘记编码了,因为我习惯了 AFNetworking,它会自动进行编码。

以上是关于在Objective C中创建JSON数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在类属性的Objective C中创建类似json的结构?

使用JSON在java Servlet中创建json数组[重复]

为啥我们不能在c中创建一个带有常量的数组[重复]

Objective-C - tableView,按降序排序JSON数组[重复]

在C中创建一个没有重复的新数组

Plist 没有在 Objective C 中创建