为啥 SwiftyJSON 无法在 swift 3 中解析数组字符串

Posted

技术标签:

【中文标题】为啥 SwiftyJSON 无法在 swift 3 中解析数组字符串【英文标题】:Why SwiftyJSON cannot parse Array String in swift 3为什么 SwiftyJSON 无法在 swift 3 中解析数组字符串 【发布时间】:2017-07-26 02:24:29 【问题描述】:

    "item": [
        
            "pid": 89334,
            "productsname": "Long Way",
            "address": "B-4/7, Malikha Housing, Yadanar St., Bawa Myint Ward,",
            "telephone": "[\"01570269\",\"01572271\"]"
        ,
        
            "pid": 2,
            "productsname": "Myanmar Reliance Energy Co., Ltd. (MRE)",
            "address": "Bldg, 2, Rm# 5, 1st Flr., Hninsi St., ",
            "telephone": "[\"202916\",\"09-73153580\"]"
        
    ],
    "success": true

我无法使用以下代码从上面的 JSON 对象解析 telephone 值。

for item in swiftyJsonVar["item"].array! 
    if let jsonDict = item.dictionary 
        let pid = jsonDict["pid"]!.stringValue
        let productsname = jsonDict["productsname"]!.stringValue

        var telephones = [String]()
        for telephone in (jsonDict["telephone"]?.array)! 
            telephones.append(telephone.stringValue)
        
    

我想获取并一一显示上述 JSON 的电话号码。我不确定为什么上面的代码不起作用。请帮我解决一下,谢谢。

【问题讨论】:

【参考方案1】:

因为telephone 是一个看起来像数组的字符串,而不是数组本身。服务器对这个数组进行了可怕的编码。您需要再次对其进行 JSON 化以遍历电话号码列表:

for item in swiftyJsonVar["item"].array! 
    if let jsonDict = item.dictionary 
        let pid = jsonDict["pid"]!.stringValue
        let productsname = jsonDict["productsname"]!.stringValue

        var telephones = [String]()
        let telephoneData = jsonDict["telephone"]!.stringValue.data(using: .utf8)!
        let telephoneJSON = JSON(data: telephoneData)

        for telephone in telephoneJSON.arrayValue 
            telephones.append(telephone.stringValue)
        
    

【讨论】:

以上是关于为啥 SwiftyJSON 无法在 swift 3 中解析数组字符串的主要内容,如果未能解决你的问题,请参考以下文章

“当前 SwiftyJSON(通过 Swift 3.0.2)无法使用 Swift 3.1 导入”的原因是啥

Alamofire 4 请求返回 NSArray,无法弄清楚如何在 Swift 3 中使用 SwiftyJSON 进行解析

SwiftyJson Swift 3 无法访问 JSON 中的字符串

在 swift 4.0 中使用 Alamofire/SwiftyJSON 时出错

SwiftyJSON 不工作 / Swift 1.2 SwiftyJSON 文件

更新到 Swift 3 破坏了我的 swifty json 代码