在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数组[重复]