【Swift开发专栏】Swift中的JSON解析与处理

简介: 【4月更文挑战第30天】本文介绍了Swift中的JSON解析与处理。首先,讲解了JSON的基础,包括其键值对格式和在Swift中的解析与序列化方法。接着,展示了如何使用`Codable`协议简化JSON操作,以及处理复杂结构的示例。通过这些内容,读者能掌握在Swift中高效地处理JSON数据的方法。

Swift 是苹果公司推出的一种强类型、安全的编程语言,它在 iOS、macOS、watchOS 和 tvOS 应用程序开发中扮演着重要角色。在网络编程中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于各种网络服务中。本文将通过三个部分,详细介绍 Swift 中的 JSON 解析与处理。

第一部分:JSON 基础

1.1 JSON 格式

JSON 是一种基于键值对的数据格式,它使用字符串作为键,并支持多种类型的值,包括数字、字符串、布尔值、数组、对象和 null。JSON 对象是由大括号 {} 包围的键值对集合,而 JSON 数组是由方括号 [] 包围的值列表。

{
   
  "name": "张三",
  "age": 30,
  "isStudent": false,
  "courses": ["数学", "英语", "物理"],
  "profile": {
   
    "height": 180,
    "weight": 70
  }
}

1.2 JSON 解析

在 Swift 中,可以使用 JSONSerialization 类将 JSON 数据转换为 Swift 中的数据类型。JSONSerialization 提供了将 JSON 数据转换为 Data 对象,以及将 Data 对象转换为 JSON 数据的功能。

import Foundation
let jsonString = """
{
   
  "name": "张三",
  "age": 30
}
"""
if let data = jsonString.data(using: .utf8) {
   
    do {
   
        if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] {
   
            print(json["name"] as? String) // 输出 "张三"
            print(json["age"] as? Int) // 输出 30
        }
    } catch {
   
        print("JSON 解析失败:\(error)")
    }
}

1.3 JSON 序列化

与 JSON 解析相反,JSON 序列化是将 Swift 中的数据类型转换为 JSON 格式的数据。这同样可以通过 JSONSerialization 类实现。

import Foundation
let dictionary: [String: Any] = [
    "name": "张三",
    "age": 30
]
if let jsonData = try? JSONSerialization.data(withJSONObject: dictionary, options: []) {
   
    if let jsonString = String(data: jsonData, encoding: .utf8) {
   
        print(jsonString)
    }
}

第二部分:Swift 中的 JSON 处理

2.1 Codable 协议

Swift 4 引入了 Codable 协议,它简化了 JSON 的解析和序列化过程。通过实现 Codable 协议,Swift 类型和结构体可以自动进行 JSON 解析和序列化。

import Foundation
struct Person: Codable {
   
    var name: String
    var age: Int
}
let jsonString = """
{
   
  "name": "张三",
  "age": 30
}
"""
if let data = jsonString.data(using: .utf8) {
   
    do {
   
        let person = try JSONDecoder().decode(Person.self, from: data)
        print(person.name) // 输出 "张三"
        print(person.age) // 输出 30
    } catch {
   
        print("JSON 解析失败:\(error)")
    }
}

2.2 JSON 处理的高级用法

在实际开发中,JSON 数据的结构往往比较复杂,可能包含嵌套的对象和数组。Codable 协议同样可以很好地处理这些复杂结构。

import Foundation
struct Profile: Codable {
   
    var height: Double
    var weight: Double
}
struct Person: Codable {
   
    var name: String
    var age: Int
    var profile: Profile
}
let jsonString = """
{
   
  "name": "张三",
  "age": 30,
  "profile": {
   
    "height": 180,
    "weight": 70
  }
}
"""
if let data = jsonString.data(using: .utf8) {
   
    do {
   
        let person = try JSONDecoder().decode(Person.self, from: data)
        print(person.name) // 输出 "张三"
        print(person.age) // 输出 30
        print(person.profile.height) // 输出 180
        print(person.profile.weight) // 输出 70
    } catch {
   
        print("JSON 解析失败:\(error)")
    }
}
相关文章
|
12天前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
3月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
13天前
|
JSON 自然语言处理 API
多语言实时数据淘宝商品评论API:技术实现与JSON数据解析指南
淘宝商品评论多语言实时采集需结合官方API与后处理技术实现。建议优先通过地域站点适配获取本地化评论,辅以机器翻译完成多语言转换。在合规前提下,企业可构建多语言评论数据库,支撑全球化市场分析与产品优化。
|
4月前
|
JSON 定位技术 PHP
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
152 67
|
4月前
|
JSON IDE Java
鸿蒙开发:json转对象插件回来了
首先,我重新编译了插件,进行了上传,大家可以下载最新的安装包进行体验了,还是和以前一样,提供了在线版和IDE插件版,两个选择,最新的版本,除了升级了版本,兼容了最新的DevEco Studio ,还做了一层优化,就是针对嵌套对象和属性的生成,使用方式呢,一年前的文章中有过详细的概述,这里呢也简单介绍一下。
147 4
鸿蒙开发:json转对象插件回来了
|
7月前
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
318 27
|
7月前
|
人工智能 API 语音技术
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
384 31
|
7月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
432 4
JSON数据解析实战:从嵌套结构到结构化表格
|
7月前
|
人工智能 小程序 前端开发
【一步步开发AI运动小程序】十九、运动识别中如何解析RGBA帧图片?
本文介绍了如何将相机抽取的RGBA帧图像解析为`.jpg`或`.png`格式,适用于体测、赛事等场景。首先讲解了RGBA图像结构,其为一维数组,每四个元素表示一个像素的颜色与透明度值。接着通过`uni.createOffscreenCanvas()`创建离屏画布以减少绘制干扰,并提供代码实现,将RGBA数据逐像素绘制到画布上生成图片。最后说明了为何不直接使用拍照API及图像转换的调用频率建议,强调应先暂存帧数据,运动结束后再进行转换和上传,以优化性能。
|
7月前
|
数据可视化 测试技术 API
前后端分离开发:如何高效调试API?有工具 vs 无工具全解析
在前后端分离的开发模式中,API 调试的效率直接影响项目的质量和交付速度。通过本文的对比分析,我们可以看到无工具调试模式虽具备灵活性和代码复用能力,但在操作便利性和团队协作上稍显不足。而传统的外部调试工具带来了可视化、高效协作与扩展性,却可能存在工具切换带来的开发链路断层问题。Apipost-Hepler 融合了两者的优势,让开发者无需离开熟悉的 IDEA 环境,就能享受可视化调试工具的强大功能。
162 5

热门文章

最新文章

推荐镜像

更多
  • DNS