【问题标题】:Create single JSON string from 2 JSON object with keys使用键从 2 个 JSON 对象创建单个 JSON 字符串
【发布时间】:2018-12-17 05:13:23
【问题描述】:

所以我有两个对象:

对象 1:

{
  "Details": {
    "name": "John"
    "age": 34
  }
}

对象 2:

{
  "MoreInfo": {
    "Title": "Mr"
  }
}

我想从这两个对象创建一个 JSON 对象,看起来像这样:

{
  "Details1": {
      "Details": {
          "name": "John"
          "age": 34
      }
  },
  "Details2": {
      "MoreInfo": {
          "Title": "Mr"
      }
  }
}

我尝试了各种不同的方法(转换为字典和合并,附加额外的字符串 {),但我似乎无法解决这个问题。 有人有什么想法吗?

【问题讨论】:

  • 这两个“JSON 对象”都是NSStringNSDictionary。您需要使用 NS(Mutable)Dictionary 并添加具有相应值(NSDictionary)的键(Details1 或 Details2)。然后使用NSJSONSerialization 将其转换为 JSON。如果这两个对象都是NSDictionary,则在将它们从NSString 转换为NSDictionary 之前使用NSJSONSerialization
  • @Larme 我只是在阅读 NSMutableDictionary 的文档时遇到了这个问题!谢谢无论如何都会试一试!
  • 类似这样的(只有一个键值对的字典)效率很低。将键 DetailsMoreInfo 放在同一层。

标签: ios objective-c json


【解决方案1】:

我不确定,但我认为这行代码可以帮助你

NSDictionary *userInfo = @{ @"name": @"John",@"age": @34 };
NSDictionary *userMoreInfo = @{ @"Title": @"Mr", };

NSDictionary *Details = [NSDictionary dictionaryWithObject:userInfo forKey:@"Details"];
NSDictionary *MoreInfo = [NSDictionary dictionaryWithObject:userMoreInfo forKey:@"MoreInfo"];

NSMutableDictionary *finalDictThatWants = [NSMutableDictionary new];
[finalDictThatWants setObject:Details forKey:@"Details1"];
[finalDictThatWants setObject:MoreInfo forKey:@"Details2"];

【讨论】:

  • 为什么要使用三种不同的方式来创建字典?保持一致。
【解决方案2】:

不确定为什么要使用可变字典...

NSDictionary *details1 = @{
                           @"Details": @{
                                   @"name": @"John",
                                   @"age": @34
                                }
                           };
NSDictionary *details2 = @{
                           @"MoreInfo": @{
                                   @"Title": @"Mr"
                                }
                          };
NSData *data = [NSJSONSerialization dataWithJSONObject:@{
                                                         @"Details1": details1,
                                                         @"Details2": details2
                                                        }
                                               options:NSJSONWritingPrettyPrinted
                                                 error:nil];
NSLog(@"\n%@", [[NSString alloc] initWithData:data
                                     encoding:NSUTF8StringEncoding]);

输出

{
  "Details2" : {
    "MoreInfo" : {
      "Title" : "Mr"
    }
  },
  "Details1" : {
    "Details" : {
      "name" : "John",
      "age" : 34
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2022-01-22
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2012-07-17
    相关资源
    最近更新 更多