首页 > 其他分享 >Swift解析json三种方式

Swift解析json三种方式

时间:2024-09-25 11:13:13浏览次数:8  
标签:url data JSON json let 解析 Swift

在 Swift 中解析本地 JSON 文件有多种形式,以下是其中几种常用的方式:

  1. 使用 Codable 协议:
    使用 Codable 协议是 Swift 中解析 JSON 的推荐方式。首先,你需要定义一个对应的数据模型,该模型需要符合 Codable 协议。然后使用 JSONDecoder 对象将 JSON 数据解析为对应的数据模型对象。

    示例代码:

    struct MyData: Codable {
        var name: String
        var age: Int
    }
    
    if let url = Bundle.main.url(forResource: "data", withExtension: "json") {
        do {
            let data = try Data(contentsOf: url)
            let myData = try JSONDecoder().decode(MyData.self, from: data)
            print(myData)
        } catch {
            print("Error decoding JSON: \(error)")
        }
    }
    
  2. 使用 JSONSerialization:
    通过 JSONSerialization 类可以将 JSON 数据解析为 Foundation 类型(例如字典或数组)。然后可以进一步处理这些 Foundation 类型数据。

    示例代码:

    if let url = Bundle.main.url(forResource: "data", withExtension: "json") {
        do {
            let data = try Data(contentsOf: url)
            if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
                if let name = json["name"] as? String, let age = json["age"] as? Int {
                    print("Name: \(name), Age: \(age)")
                }
            }
        } catch {
            print("Error parsing JSON: \(error)")
        }
    }
    
  3. 使用 SwiftyJSON 等第三方库:
    除了使用原生的 JSON 解析方法外,你还可以使用第三方库来简化 JSON 解析过程。SwiftyJSON 是一个流行的 JSON 解析工具,可以使得解析 JSON 数据更加简单和灵活。

    示例代码:

    if let url = Bundle.main.url(forResource: "data", withExtension: "json") {
        do {
            let data = try Data(contentsOf: url)
            let json = try JSON(data: data)
            let name = json["name"].stringValue
            let age = json["age"].intValue
            print("Name: \(name), Age: \(age)")
        } catch {
            print("Error parsing JSON: \(error)")
        }
    }
    

标签:url,data,JSON,json,let,解析,Swift
From: https://www.cnblogs.com/Tamako-/p/18430930

相关文章

  • Android启动过程深入解析
    Android启动过程深入解析A当按下Android设备电源键时究竟发生了什么?Android的启动过程是怎么样的?A什么是Linux内核?A桌面系统linux内核与Android系统linux内核有什么区别?A什么是引导装载程序?A什么是Zygote?A什么是X86以及ARMlinux?A什么是init.rc?A什么是系统服务?当我们想到......
  • 百度地图 ->选点,地址搜索,坐标逆解析
    1. 安装百度依赖npminstallvue-baidu-map-S2.引入与注册将下方 BaiduMapPoint 压缩包解压放到 /src/components 目录下importBaiduMapPointfrom'@/components/BaiduMapPoint'Vue.component('BaiduMapPoint',BaiduMapPoint)3. ak 秘钥写在组件中,自行酌情......
  • 高德地图 ->选点,地址搜索,坐标逆解析
    1.安装高德依赖  vue-amap文档npminstallvue-amap-S2.组件引入及注册将下方 AMapPoint 压缩包解压放到 /src/components 目录下。importAMapPointfrom'@/components/AMapPoint'Vue.component('AMapPoint',AMapPoint)3. 从2021年后生成的地图 key 需......
  • 【Java】虚拟机(JVM)内存模型全解析
    目录一、运行时数据区域划分版本的差异:二、程序计数器程序计数器主要作用三、Java虚拟机1.虚拟机运行原理2.活动栈被弹出的方式3.虚拟机栈可能产生的错误4.虚拟机栈的大小四、本地方法栈五、堆1.堆区的组成:新生代+老生代2.堆空间的大小设置3.创建对象的内......
  • Spring Cloud全解析:服务调用之OpenFeign简介
    OpenFeign简介OpenFeign是SpringCloud对于Feign进行的再次封装,使其支持了SpringMVC的标准注解以及HttpMessageConverters依赖<!--openFeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign<......
  • Codable解析JSON
    当然可以!下面我会详细讲解如何在Swift中解析JSON文件,使用Codable协议的方法。示例:解析一个简单的JSON文件假设我们有一个名为example.json的JSON文件,内容如下:{"name":"JohnDoe","age":30}第一步:定义数据模型首先,我们需要定义一个与JSON数据结构......
  • 栈的深度解析:顺序栈与链栈的实现
    引言栈是一种重要的线性数据结构,遵循“后进先出”(LIFO)的原则。栈的应用非常广泛,如表达式求值、括号匹配、递归实现等。在本文中,我们将深入探讨栈的概念,并通过顺序栈和链栈两种实现方式进行对比分析。一、基本概念1.定义栈(Stack)是一种只能在一端进行插入和删除操作的集合,遵......
  • 2024CSP-S提高组初赛试题及解析( 第一部分选择题(1-5))
    ......
  • 2024CSP-S提高组初赛试题及解析( 第一部分选择题(6-10))
    ......
  • 2024CSP-S提高组初赛试题及解析( 第一部分选择题(10-15))
    ......