对于JSONSerialized URLRequest的复杂密钥对值,什么是正确的Swift 3数据类型

时间:2017-10-17 13:28:26

标签: json swift dictionary

我需要传递如下数据:

{
    "key":"355-3a34c",
    "status": [
        {
            "car info": [
                {
                    "body": "composite",
                    "doors": "standard",
                    "type": "sedan"
                }
            ],
            "trim": "luxury",
            "headlights": "led",
            "tires": 4,
            "step": "prepare for display",
            "soapType": "soft scrub",
            "attributes": []
        }, 
        {
            "step": "display",
            "days": 30,
            "location": "front"
        }
    ]
}

URLRequest后的JSONSerialization

let convertedString = String(data: myData, encoding: String.Encoding.utf8) // the data will be converted to the string

需要注意的一些事项:

  1. 其中一个键重复("step"
  2. 有一个复杂的密钥:{ "car info": [{ "body": "composite", "doors": "standard", "type": "sedan" }]
  3. 我能够将数据加载到词典词典中,这使我能够拥有重复的键。

    但是,我当然发现,由于数据无法保证保留输入的顺序,因此输出无法使用,因为我需要保留数据的顺序以保持其意义。

    我正在寻找一种可以的数据类型:

    1. 处理重复的密钥
    2. 处理复杂数据
    3. JSONSerialization
    4. 的可接受数据类型
    5. 保留输入的数据顺序
    6. 我遇到了字典文字数据类型并将我的数据转换为它。它似乎不接受{ "car info": [{ "body": "composite", "doors": "standard", "type": "sedan" }].

      的复杂数据类型

      此外,当我省略了复杂的数据结构时,仅仅是为了测试,当它被序列化为字典文字时出现了这个错误:

      'NSInvalidArgumentException', reason: '*** +[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'.
      

      我可以为符合我需要的标准的Swift 3使用哪种数据类型或数据类型组合?

      非常感谢。

1 个答案:

答案 0 :(得分:0)

onPostExecute()不允许您控制键的顺序,但您不需要使用它来制作类似JSON的文本。

您可以添加一串字符串,然后自己将其编码为Data。