具有多个字段的JSON字符串

时间:2015-11-04 18:42:58

标签: ios objective-c json

我目前正在使用以下内容从iOS应用程序向服务器发送一些简单的json:

NSData *jsonData = [@"{ \"item\": \"hat\" }" dataUsingEncoding:NSUTF8StringEncoding];

我想添加一堆其他字段和值。

包含更多字段的合适语法是什么?

这样的东西
 NSData *jsonData = [@"{ \"item\": \"hat\",\"id\":2,\"color\":\"blue\" }" dataUsingEncoding:NSUTF8StringEncoding];

或者通过发送字典有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

创建词典:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:'Value' forKey:'Key']; //adding values

您可以使用JSONKit

将NSDictionary转换为Json字符串,如下所示:

NSString *jsonString = [dictionary JSONStringWithOptions:JKSerializeOptionNone error:nil];

或者您可以使用SBJson

NSString *jsonString = [dictionary JSONRepresentation];

你可以在没有第三方框架的情况下做到这一点:

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionaryOrArrayToOutput 
                                                   options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                     error:&error];

if (! jsonData) {
    NSLog(@"Got an error: %@", error);
} else {
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}

答案 1 :(得分:0)

首先创建一个包含必填字段的NSDictionary并将其序列化为JSON:

NSDictionary *package = @{@"item":@"hat",@"id":2,@"color":@"blue"};
NSData *data = [NSJSONSerialization dataWithJSONObject:package 
                                    options:0 error:&error];