您的当前位置:首页ios如何解析json

ios如何解析json

2024-12-13 来源:哗拓教育

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。


1,首先你需要创建一个结构,该结构将保存从JSON对象中检索的日期和时间值。

struct JSONTest: Codable {

    let date: String

    let time: String

}

2,修改viewDidLoad方法

override func viewDidLoad() {

    super.viewDidLoad()

    // 1 url解析地址

    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()

}

结果如下:

显示全文