繁体   English   中英

嵌套字典转换为json swift

[英]nested dictionaries converted to json swift

我有一个需要转换为Json的字典词典。

[
    Dict1:1, 
    test: A Value, 
    NestedDict1:[
        city: A City Name, 
        address: An Address, 
        NestedDict2: [
            1: 1, 
            39: 2
        ],
        favorite1: 2, 
        favorite3: Chocolate
    ]
]

当我使用

NSJSONSerialization.dataWithJSONObject(myJsonDict, options: NSJSONWritingOptions.PrettyPrinted, error: nil)

它仅编码最外面的字典。 所以我的输出看起来像这样:

{
    "Dict1":"1", 
    "test": "A Value", 
    "NestedDict1":"[
        city: A City Name, 
        address: An Address, 
        NestedDict2: [
            1: 1, 
            39: 2
        ],
        favorite1: 2, 
        favorite3: Chocolate
    ]"
}

我如何也对内部字典使用JSON?

我认为问题更多在于您的数据表示形式。

如果您可以将所有键都更改为Strings,那么它可以是字典,因为Strings符合Hashable 否则,它将被定义为Any ,并且实际上不能是Dictionary键。

这样做可以实现以下目的:

let myJsonDict : [String:AnyObject] = [
    "value": 1123,
    "test": "some string",
    "NestedDict1": [
        "city": "A City Name",
        "address": "An Address",
        "NestedDict2": [
            "1": 1,
            "39": 2
        ],
        "favorite1": 2,
        "favorite3": "Chocolate"
    ]
]

var jsonObject = NSJSONSerialization.dataWithJSONObject(myJsonDict, options: NSJSONWritingOptions.PrettyPrinted, error: nil)


println(NSString(data: jsonObject!, encoding: NSUTF8StringEncoding)!)

提供以下输出:

{
  "test" : "some string",
  "NestedDict1" : {
    "city" : "A City Name",
    "address" : "An Address",
    "favorite3" : "Chocolate",
    "NestedDict2" : {
      "1" : 1,
      "39" : 2
    },
    "favorite1" : 2
  },
  "value" : 1123
}

迅捷3

let myJsonDict : [String: Any] = [
    "Dict1": "1",
    "test": "A Value",
    "NestedDict1":[
        "city": "A City Name",
        "address": "An Address",
        "NestedDict2": [
            "1": "1",
            "39": "2"
        ],
        "favorite1": "2",
        "favorite3": "Chocolate"
    ]
]
let jsonObject = try? JSONSerialization.data(withJSONObject: myJsonDict, options: [])

if let jsonString = String(data: jsonObject!, encoding: .utf8) {
    print(jsonString)
}

输出量

{“ test”:“ A Value”,“ Dict1”:“ 1”,“ NestedDict1”:{“ favorite1”:2,“ city”:“ A City Name”,“ NestedDict2”:{“ 1”:“ 1 “,” 39“:” 2“},” favorite3“:”巧克力“,”地址“:”地址“}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM