【问题标题】:Swift 3 - Add key value to dictionary in parsed JSON ResponseSwift 3 - 在解析的 JSON 响应中向字典添加键值
【发布时间】:2018-07-13 17:00:03
【问题描述】:

我正在调用 URL 以获取 JSON 响应,即字典数组。我想在响应中得到的每个字典中附加一个键:值对。我该如何在 swift 3 中解决这个问题?

例如,我的 JSON 响应是:

[{"id":"100", "name":"Matt", "phone":"0404040404"}
,{"id":"100", "name":"Sean", "phone":"0404040404"}
, {"id":"100", "name":"Luke", "phone":"0404040404"}]

我想修改响应以显示另一个关键的“地址”,所以输出变为:

[{"id":"100", "name":"Matt", "phone":"0404040404", "address":"TBC"}
,{"id":"100", "name":"Sean", "phone":"0404040404", "address":"TBC"}
, {"id":"100", "name":"Luke", "phone":"0404040404", "address":"TBC"}]

我仅用于解析响应的代码如下,没有附加键:值对的代码。 我可以在解析自身时追加吗?

let Task = URLSession.shared.dataTask(with: URL!) { (Data, response, error) in
            if error != nil {
                print(error)
            } else {
                if let DataContent = Data {
                    do {
                        let JSONresponse = try JSONSerialization.jsonObject(with: DataContent, options: JSONSerialization.ReadingOptions.mutableContainers)
                        print(JSONresponse)

                        for item in JSONresponse as! [Dictionary<String, Any>] {
                            let id = item["id"] as! String
                            let name = item["name"] as! String
                            let phone = item["phone"] as! String         
                        }
                    }
                    catch { }
                }
            }
        }
        Task.resume()

【问题讨论】:

    标签: ios json dictionary swift3 key-value


    【解决方案1】:

    要在字典中附加额外的键:值对,有很多方法可以实现这一点。但在您的情况下,最好在从 Web 服务调用获得响应之后附加 key:value 。 这是示例代码 sn-p 可以帮助您。

    var aJSONRes = JSONresponse as! [Dictionary<String, Any>]
            for (index,_) in aJSONRes.enumerated() {
                aJSONRes[index]["address"] = "Your address"
            }
    

    希望对你有所帮助。

    【讨论】:

    • 这会将结构更改为数组数组。我仍然想保留字典数组并将地址添加为每个字典的最后一个键。对这位朋友有什么想法吗?
    • [["id": "100", "name": "Matt", "address": "你的地址", "phone":"0404040404"], ["id": " 100”,“姓名”:“肖恩”,“地址”:“您的地址”,“电话”:“0404040404”],[“id”:“100”,“姓名”:“卢克”,“地址”: "Your address", "phone": "0404040404"] ] 这是我得到的输出。
    • 那不是array的结构体数组,是swift3中字典的数组。你可以试试这个'print(aJSONRes.first!["address"]!)'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 2017-02-17
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2015-02-24
    相关资源
    最近更新 更多