0

我是 json 新手,很困惑如何做到这一点。我在下面有这个基本信息我需要转换

    "trailer":
         "window":"broken"
         "sidesteps":"dent"
    "tractor":
        "window":"craked"
        "sidesteps":"missing"
     "tire":
        "tire1":
            "pressure":"120"
            "rim":"good"
         "tire2":
            "pressure":"120"
            "rim":"good"
4

2 回答 2

3

根据您从 textFields 获取的所有值创建一个字典。它看起来像这样,

NSDictionary *dictionary = @{@"trailer":@{@"window":@"broken", @"sidesteps":@"missing", @"tractor": @{@"window":@"broken",@"sidesteps":@"missing"}, @"tire":@{@"tire1" : @{@"pressure" : @"120", @"rim":@"good"}}}};

输出:

dictionary =   {
        "trailer": {
            "window": "broken",
            "sidesteps": "missing",
            "tractor": {
                "window": "broken",
                "sidesteps": "missing"
            },
            "tire": {
                "tire1": {
                    "pressure": "120",
                    "rim": "good"
                }
            }
        }
    }

您可以使用NSMutableDictionary动态创建类似的结构。您可以创建多个可变字典并将其添加为另一个字典的对象以实现上述结果。

要转换为 JSON 数据,您可以这样做,

NSError *error;
NSData *postData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error];

如果要转换成字符串来查看数据,

NSString *jsonString = [[NSString alloc] initWithData:postData encoding:NSStringEncodingConversionAllowLossy];
NSLog(@"jsonString = %@", jsonString);

如果您想将此 postbody 设置为 http 请求并将其传递给服务器,您可以将其设置为,

[urlRequest setHTTPBody:postData];
于 2013-01-13T20:33:41.600 回答
1

假设您知道这不是合法的 JSON,并且它只是一个示意图,它表示一组嵌套的 NSDictionary 对象。外部字典包含键“trailer”、“tractor”和“tire”,每个都对应一个 NSDictionary。"trailer" 的 NSDictionary 有键 "window" 和 "sidesteps"。其他类似,只有“轮胎”有另一层 NSDictionary 嵌套。

至于从文本字段中获取值,这取决于您。你的 UI 设计是什么样的?如果这些是固定字段(键值始终相同),那么您可以让用户填写列表中的多个文本字段。

于 2013-01-13T20:25:51.003 回答