当前位置: 首页 > news >正文

swift 对象转Json

在 Swift 中将对象转换为 JSON 可以通过以下方法实现:

使用 Codable 协议

Swift 的 Codable 协议(EncodableDecodable 的组合)是处理 JSON 编码和解码的推荐方式。

struct Person: Codable {var name: Stringvar age: Int
}let person = Person(name: "John", age: 30)
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinteddo {let jsonData = try encoder.encode(person)if let jsonString = String(data: jsonData, encoding: .utf8) {print(jsonString)}
} catch {print("Error encoding to JSON: \(error)")
}

使用 JSONSerialization

如果对象是字典或数组,可以直接使用 JSONSerialization

let dictionary: [String: Any] = ["name": "John", "age": 30]
if JSONSerialization.isValidJSONObject(dictionary) {do {let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: .prettyPrinted)if let jsonString = String(data: jsonData, encoding: .utf8) {print(jsonString)}} catch {print("Error converting to JSON: \(error)")}
}

处理自定义编码逻辑

对于需要自定义编码逻辑的对象,可以手动实现 Encodableencode(to:) 方法:

struct CustomPerson: Encodable {var name: Stringvar age: Intenum CodingKeys: String, CodingKey {case name = "user_name"case age}func encode(to encoder: Encoder) throws {var container = encoder.container(keyedBy: CodingKeys.self)try container.encode(name, forKey: .name)try container.encode(age, forKey: .age)}
}

注意事项

  • 确保所有属性都符合 Codable 协议,否则需要手动实现编码逻辑。
  • 使用 JSONEncoder 时,可以通过 outputFormatting 调整输出格式(如 .prettyPrinted)。
  • 如果对象包含非 Codable 类型(如 UIImage),需要先转换为支持的类型(如 DataString)。

相关文章:

  • ArcGIS Pro利用擦除工具,矢量要素消除另一矢量部分区域
  • QT 国际化 翻译 总结
  • Buildroot 2025.05 中文手册【AI高质量翻译】
  • 哪家香港站群服务器比较好用?
  • 生成树基础实验
  • 机器学习4——参数估计之贝叶斯估计
  • 工作台-02.代码开发
  • 学习日记-day38-spring-6.27
  • Veo 3 视频生成大模型完整操作教程(2025)
  • 元宇宙与人工智能的融合:从虚拟世界到智能生态的IT新革命
  • 社会工程--如何使用对方的语言
  • 汇编8086:解决创建、写入文档在临时文档的问题 | 汇编实现创建文件永久保存
  • 【innovus基础】- 最基本的timing工具自动修复方法
  • Unity性能优化-渲染模块(1)-CPU侧(1)-优化方向
  • 每日八股文6.28
  • [Python]-基础篇1- 从零开始的Python入门指南
  • 【编译原理】第一章 习题
  • Class1线性回归
  • Ubuntu 20.04 系统上运行 SLAM卡顿是什么原因
  • TCP 交互数据流优化策略与性能分析研究​