【问题标题】:variables from a JSON in swiftswift中来自JSON的变量
【发布时间】:2017-04-12 15:51:56
【问题描述】:

我是一个快速编程的初学者,我需要来自 JSON 的值,它看起来像这样......我不明白这个 JSON..:-(:

{

"nextUpdate":300,
"subscriptions":["speedon","roamLikeHome","tns"],
"title":"",
"hasOffers":true,
"passName":"Ihr Telekom Datentarif",
"passStage":1,
"validityPeriod":2,
"initialVolume":6547308544,
"initialVolumeStr":"6,09 GB",
"usedVolume":2550134551,
"usedPercentage":39,
"usedVolumeStr":"2,37 GB",
"usedAt":1487480985000,
"remainingSeconds":833168,
"remainingTimeStr":"9 Tage 15 Std.",
"downSpeed":-1,
"downSpeedStr":"Max",
"upSpeed":-1,
"upSpeedStr":"Max",
"passType":103


}

我会将 usedVolume 和 usedPercentage 获取到一个变量中!

我的代码:

    var volume: [String] = []
    var percent: [String] = []

    override func viewDidLoad() {
        super.viewDidLoad()


        let url=URL(string:"http://pass.telekom.de/api/service/generic/v1/status/.json")
        do {
            let allData = try Data(contentsOf: url!)
            let data = try JSONSerialization.jsonObject(with: allData, options: JSONSerialization.ReadingOptions.allowFragments) as! [String : AnyObject]
            if let arrJSON = data["??"] {........

我如何在可变体积中获得它,百分比..

感谢您的帮助..!

【问题讨论】:

  • data 是一个普通的旧 Swift 字典。像使用任何其他字典一样使用它。你知道你想要的值是什么键。只需访问这些密钥。
  • 您可以使用一个流行的库来帮助您处理 JSON,称为 SwiftyJSON
  • 与您的直接问题无关,您真的,真的不应该像现在这样访问远程数据。由于远程数据访问,您的应用程序将被阻止。有适当的方法可以访问远程数据,而您正在做的不是它。但这是您接下来可以解决的另一个问题。
  • 您应该在 Swift 3.x 中转换为 as? [String : Any] 而不是 as? [String : AnyObject]
  • @Heisenberg 你能试试我的回答吗?如果您有任何问题,请告诉我

标签: json swift


【解决方案1】:

试试这个方法。

    var usedVolume:Int?
    var usedPercent:Int?

    let url = URL(string:"http://pass.telekom.de/api/service/generic/v1/status/.json")

    do {

        let allData = try Data(contentsOf: url!)
        let json = try JSONSerialization.jsonObject(with: allData, options: []) as! [String: AnyObject]
        if let uv = json["usedVolume"] as? Int {
            usedVolume = uv
        }

        if let up = json["usedPercentage"] as? Int {
            usedPercent = up
        }

    } catch let error as NSError {
        print("Failed to load: \(error.localizedDescription)")
    }

【讨论】:

  • 这对另一个问题有什么影响?它与其他答案存在所有相同的问题。
  • 从问题中我了解到他是 swift 新手,所以我只是更正了。答案与显示如何使用变量存储数据略有不同。
  • 相关键的值不是字符串。并且永远不要在主线程上加载远程数据。
  • 是的,我明白你的意思,但问题只是如何从 json 中获取这些值。
  • 对。但是,如果您要发布答案,请发布有用且正确的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 2018-02-22
  • 1970-01-01
相关资源
最近更新 更多