如何在SWIFT for iOS 9中使用json-data

时间:2015-09-18 10:54:40

标签: ios json xcode swift ios9

我从json文件中获取数据:

json-data看起来像:

{
  "Datum": "2015-06-05 16:55:55",
  "Tagesauftraege": {
       "Wasserschaden": {
       "sieben": "97",
       "gestern": "138",
       "heute": "18"
   },
   "Leckortung": {
       "sieben": "54",
       "gestern": "72",
       "heute": "11"
    }
  },
  "Umsatz": {
       "db1": "74000",
       "oel": "44200"
  }
}

现在我会

@IBAction func buttonRefreshData(sender: UIButton) {
    let jsonUrl = url

    let session = NSURLSession.sharedSession()
    let shotsUrl = NSURL(string: jsonUrl)

    let task = session.dataTaskWithURL(shotsUrl!) {
        (data, response, error) -> Void in

        do {
            let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers ) as! [String: AnyObject]

            self.labelWasserschadenSieben.text = //String(jsonData['Tagesauftraege']['Wasserschaden']['sieben'])

        } catch _ {
            // Error
        }
    }

    task.resume()

}

但是我收到了错误

  

使用未解析的标识符' Tagesauftraege'

我知道,它不是PHP,但在PHP中我有一个易于使用的数组。 SWIFT怎么样?我如何使用打印所有我的数据容易标签,如labelWasserschadenSieben?

这是我打印时的输出(jsonData)

["Datum": 2015-06-05 16:55:55, "Tagesauftraege": {
Leckortung =     {
    gestern = 72;
    heute = 11;
    sieben = 54;
};
Wasserschaden =     {
    gestern = 138;
    heute = 18;
    sieben = 97;
};
}, "Umsatz": {
db1 = 74000;
oel = 44200;
}]

2 个答案:

答案 0 :(得分:2)

你需要在swift

中使用双引号作为字符串
self.labelWasserschadenSieben.text = String(jsonData["Tagesauftraege"]["Wasserschaden"]["sieben"])

答案 1 :(得分:1)

从基础开始。 JSON可以是字典,也可以是数组或nil,所以你得到一个AnyObject?您可以使用as将其分配给NSDictionary吗?或者作为!然后你有一本字典。从该字典中,您可以读取键“Tagesauftraege”,它也可以是字典,数组,字符串,数字,null或nil。所以你得到一个AnyObject?然后你继续。