【问题标题】:converting my nsstring to json [closed]将我的 nsstring 转换为 json [关闭]
【发布时间】:2013-01-13 19:32:49
【问题描述】:

我是 json 新手,对如何执行此操作感到困惑。我在下面有这个基本信息,我需要转换

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

【问题讨论】:

  • window=broken 与 rim:good 有何不同?不清楚为什么有时您使用 : 和其他 = 来显示关系
  • 我现在编辑了信息,拖车拖拉机和轮胎是内部有价值的对象。我将如何或使用什么将其转换为 json 并传递给服务器
  • @baste,你是如何创建上述字符串的?它是以编程方式创建的吗?那是转换前的字典吗?
  • @ACB 实际上它只是我要发送的信息的草稿。我将从文本字段中提取值。上面的字符串只是对我们的介绍。鉴于值将来自文本字段或另一个字符串,我需要知道如何实现这种格式(如果这是正确的 json 格式)。
  • NSString to JSON string的可能重复

标签: ios objective-c json parsing


【解决方案1】:

根据您从 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];

【讨论】:

  • 当然,这并没有告诉他如何创建“真正的”(动态)字典结构。 (Apple JSON API 很烂,因为它创建一个 NSData 而不是直接使用 NSString。最好使用其中一个开源版本。)
  • 这只是一个如何转换为 JSON 的示例。如果问题是创建字典,我也会将其包括在内。
  • @ACB3 你是最棒的!谢谢,这很有帮助。我会尝试检查你提到的字典,但这已经是一个很大的帮助。如果我能投票就好了 :) 我的声誉仍然低于 15 :( 但再次感谢您
【解决方案2】:

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

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

【讨论】:

  • 我同意你的解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2013-01-10
  • 1970-01-01
  • 2013-09-15
  • 2017-03-15
  • 1970-01-01
  • 2012-12-25
相关资源
最近更新 更多