为什么SwiftyJSON无法解析swift 3中的Array String

时间:2017-07-26 02:24:30

标签: ios swift3 swifty-json

{
    "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 个答案:

答案 0 :(得分:5)

因为telephone是一个看起来像数组的字符串,而不是数组本身。服务器编码这个数组非常糟糕。您需要JSON-ify再次遍历电话号码列表:

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)
        }
    }
}