为啥 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 时出错