1,JSON是什么
JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。
JSON建構于兩種結構:
“名稱/值”對的集合(A collection of name/value pairs)。
不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。
值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)。
這些都是常見的數據結構。事實上大部分現代計算機語言都以某種形式支持它們。這使得一種數據格式在同樣基于這些結構的編程語言之間交換成為可能。
JSON具有以下這些形式:
{
? "firstName": "John",
? "lastName": "Smith",
? "isAlive": true,
? "age": 27,
? "address": {
? ? "streetAddress": "21 2nd Street",
? ? "city": "New York",
? ? "state": "NY",
? ? "postalCode": "10021-3100"
? },
? "phoneNumbers": [
? ? {
? ? ? "type": "home",
? ? ? "number": "212 555-1234"
? ? },
? ? {
? ? ? "type": "office",
? ? ? "number": "646 555-4567"
? ? },
? ? {
? ? ? "type": "mobile",
? ? ? "number": "123 456-7890"
? ? }
? ],
? "children": [],
? "spouse": null
}
總之,json廣泛應用于多種語言之間的交互,如今所有語言都支持json格式,廣泛用于通過Internet發送數據。JSON格式包括字典和數組。
ios如何讀json
1
打開Xcode并創建一個新的Single View應用程序。
2
IOSJSONTutorial,然后使用您的常規值填寫組織名稱和組織標識符。輸入Swift作為語言,然后選擇Next。
3
轉到? 故事板。將4個標簽添加到故事板。根據以下屏幕截圖定位和命名標簽。
4
打開Assistant Editor并確保ViewController.swift文件可見。按住Ctrl鍵并從右側日期標簽拖動到ViewController類并創建以下Outlet。
?5
按Ctrl +從右側時間標簽拖動到ViewController類并創建以下Outlet。
JSONTest.com是一個利用JavaScript Object Notation(JSON)的服務測試平臺。在這種情況下,我們使用日期服務。這將返回當前日期和時間。
1,首先你需要創建一個結構,該結構將保存從JSON對象中檢索的日期和時間值。
struct JSONTest: Codable {
? ? let date: String
? ? let time: String
}
2,修改viewDidLoad方法
override func viewDidLoad() {
? ? super.viewDidLoad()
? ? // 1 url解析地址
? ? let urlString = "http://date.jsontest.com"
? ? guard let url = URL(string: urlString) else { return }
? ? // 2 該dataTask(配:completionHandler :)方法創建在URL中檢索內容的任務
? ? URLSession.shared.dataTask(with: url) { (data, response, error) in
? ? ? ? if error != nil {
? ? ? ? ? ? print(error!.localizedDescription)
? ? ? ? }
? ? ? ? guard let data = data else { return }
? ? ? ? do {
? ? ? ? ? ? // 3
? ? ? ? ? ? //對JSON對象的解碼
? ? ? ? ? ? let JSONData = try JSONDecoder().decode(JSONTest.self, from: data)
? ? ? ? ? ? // 4
? ? ? ? ? ? //JSON對象的日期和時間值將分配給標簽
? ? ? ? ? ? DispatchQueue.main.async {
? ? ? ? ? ? ? ? self.dateLabel.text = JSONData.date
? ? ? ? ? ? ? ? self.timeLabel.text = JSONData.time
? ? ? ? ? ? }
? ? ? ? } catch let jsonError {
? ? ? ? ? ? print(jsonError)
? ? ? ? }
? ? ? ? // 5 恢復方法開始web請求。
? ? ? ? }.resume()
}
結果如下: