【问题标题】:Use SwiftyJSON to get proper data使用 SwiftyJSON 获取正确的数据
【发布时间】:2017-05-19 02:39:07
【问题描述】:

这是我的JSON数据,如何获取pickArray中0的src数据?

"pickArray" : "{\"0\":{\"src\":\"https:\/\/fb-s-d-a.akamaihd.net\/h-ak-xpl1\/v\/t1.0-9\/p720x720\/18010403_1525007564199498_8009700960533638318_n.png?oh=25dbc9c1522dcfdd1d15cdd3e8c0c7da&oe=59997685&__gda__=1502470695_f212ade003e9b1c4ddc6a3ab6cc9e7e7\",\"width\":720,\"height\":720}}"

如果我这样做:

let dataArray  = json["pickArray"]
print("dataArray = ",dataArray)

dataArray =  {"0":{"src":"https://fb-s-d-a.akamaihd.net/h-ak-xpl1/v/t1.0-9/p720x720/18010403_1525007564199498_8009700960533638318_n.png?oh=25dbc9c1522dcfdd1d15cdd3e8c0c7da&oe=59997685&__gda__=1502470695_f212ade003e9b1c4ddc6a3ab6cc9e7e7","width":720,"height":720}}

但如果我这样做,显示 null:

let srcArray  = dataArray["0"]
print("srcArray = ",srcArray)

我正在使用swift3.0

【问题讨论】:

    标签: swift xcode swift3 swifty-json


    【解决方案1】:

    它看起来像键 pickArray 你在 String 中有 JSON 响应,所以获取该字符串并将其转换为数据并从中获取 JSON,然后从中获取 src

    let stringResponse  = json["pickArray"].stringValue
    if let data = stringResponse.data(using: .utf8) {
         let pickArray = JSON(data: data)
         //Now access the pickArray to get the src
         var sortedKeys = [String]()
         if let allKeys = pickArray.dictionaryObject {
             sortedKeys = Array(allKeys.keys).sorted { $0.compare($1, options: .numeric) == .orderedAscending }
         }
         for key in sortedKeys {
             print(pickArray[key]["src"].stringValue)
             print(pickArray[key]["width"].intValue)
             print(pickArray[key]["height"].intValue)
         }
    }
    

    【讨论】:

    • 你基本上复制了我的答案。
    • @TristanBeaton 当我第一次评论那篇文章时,我没有从那篇文章中看到你的答案,之后我在这里找到了这篇文章的答案,当我在这篇文章中标记为重复时,你的答案和我的答案都不同,因为您认为整个 JSON 响应是字符串,而事实并非如此
    • @TristanBeaton 另外,如果您认为问题是重复的,请将其标记为重复,而不是再次发布相同的答案
    • 我明白你现在是如何得到答案的。我认为你的这个问题是正确的。
    • @NiravD 该死的!!!!!!!!!它完美地工作!!!非常感谢你我的英雄~~~~~~~ !!!!惊人的!!!我现在很高兴:D
    【解决方案2】:
    let srcArray  = dataArray["0"].dictionaryObject!
    print("srcArray = \(srcArray)")
    

    现在您可以访问“0”值的元素,如下所示。希望这对你有用。

    let jsonScr = JSON(srcArray)
    let srcURL = jsonScr["scr"].stringValue
    

    【讨论】:

    • 它在展开可选值时显示意外发现 nil 的致命错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多