ios - 使用 Codable 解析 json 数据
问题描述
我是使用 Codable 解析 JSON 数据的新手,但我的 JSON 格式有问题。我无法将正确的字段解析到我的 Employee 对象中。这是我第一次使用可编码并处理复杂的 URL。这就是我的 JSON url 的结构:https ://ibb.co/WgDNMNT
{
"students": [
{
"uuid": "0djkdjjf734783749c",
"full_name": "Joe Morris",
"phone_number": "44445399",
"email_address": "jm99@jfgj.com",
"biography": "student of arts"
},
{
"uuid": "0djkdjjf734783749c",
"full_name": "Joe Morris",
"phone_number": "44445399",
"email_address": "jm99@jfgj.com",
"biography": "student of arts"
}
]
}
这是我的代码:
struct Students: Codable {
var uuid: String?
var fullName: String?
var phoneNumber: String?
var emailAddress: String?
var biography: String?
}
//Custom Keys
enum CodingKeys: String, CodingKey{
case uuid
case fullname = "full_name"
case phoneNumber = "phone_number"
case emailAddress = "email_address"
case biography = "biography"
}
func parseData(){
guard let url = URL(string: "xxxxxxxxxx") else {return}
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let dataResponse = data,
error == nil else {
print(error?.localizedDescription ?? "Error")
return }
do{
let decoder = JSONDecoder()
let model = try decoder.decode([Students].self, from: dataResponse)
} catch let parsingError {
print("Error", parsingError)
}
}
task.resume()
}
解决方案
代替
let model = try decoder.decode([Students].self, from: dataResponse)
和
let model = try decoder.decode([String:[Students]].self, from: dataResponse)
print(model["students"])
推荐阅读
- google-sheets - 输入日期序列号并保留目标格式
- arrays - 嵌套的 for 循环在 Flutter 中没有按预期工作
- android-studio - Android Studio 模拟器错误:INSTALL_FAILED_NO_MATCHING_ABIS
- python - matplotlib y 轴标签错误
- javascript - Vue:从 v-for 列表中删除项目会留下画布项目
- javascript - 如何在 TypeScript 的 Vue Composition API 中响应式访问当前路由名称?
- azure-sqldw - 获取 Azure Synapse DW 中临时表的列名
- xamarin.forms - Xamarin 表单 - 媒体控件
- sql - 是否可以使用模式匹配从 Oracle SQL 数据库中选择列?
- uart - vxworks 的 UART 环回测试