Swift4 JSON解析问题:无法仅打印field1与field2的值求助
Swift JSON解析:提取field1和field2的值
嗨!作为Swift新手碰到JSON解析问题太正常啦,别着急~我来帮你捋捋最常用的解决方案,用Swift自带的Codable协议就能轻松实现你的需求,而且代码简洁易维护。
第一步:定义对应的数据模型
首先我们要创建一个遵循Codable协议的结构体,只包含你需要的field1和field2字段——Codable会自动忽略JSON里其他不需要的字段,非常省心。注意字段类型要和你的JSON数据完全匹配哦(比如JSON里是字符串就用String,是数字就用Int/Double):
struct TargetData: Codable { let field1: String // 根据你的JSON实际类型调整,比如Int/Double let field2: String }
如果你的JSON里的键名和模型字段名不一致(比如JSON里是"Field1"而你模型里用field1),可以通过CodingKeys来映射:
struct TargetData: Codable { let field1: String let field2: String // 自定义映射关系 enum CodingKeys: String, CodingKey { case field1 = "Field1" case field2 = "Field2" } }
第二步:编写解析代码
接下来我们把JSON数据(不管是网络请求返回的Data,还是本地字符串转的Data)解析成上面的模型,然后提取需要的字段:
// 先模拟你的JSON数据(替换成你实际的JSON字符串或Data) let sampleJson = """ { "field1": "测试值1", "field2": "测试值2", "otherUnneededField": "这个字段会被自动忽略" } """ // 把字符串转为Data(如果你的数据已经是Data类型,这一步可以跳过) guard let jsonData = sampleJson.data(using: .utf8) else { print("无法将JSON字符串转换为Data格式") return } // 开始解析 do { let decodedData = try JSONDecoder().decode(TargetData.self, from: jsonData) // 打印你需要的字段值 print("field1的值:\(decodedData.field1)") print("field2的值:\(decodedData.field2)") } catch { // 解析失败时打印错误信息,方便排查 print("JSON解析出错:\(error.localizedDescription)") print("详细错误:\(error)") // 可以打印完整错误,看具体哪里错了 }
常见出错点排查
如果还是解析失败,你可以检查这几个地方:
- JSON格式是否合法:确保所有键都是双引号,逗号没有多写/漏写,括号配对正确
- 字段类型不匹配:比如JSON里
field1是数字123,但你模型里用了String,就会解析失败 - 键名不一致:比如JSON里是
"field_1",但模型里写的是field1,没有做映射处理
你可以把自己实际的JSON内容和报错信息补充上来,我再帮你针对性调整~
内容的提问来源于stack exchange,提问作者antonioag
相关产品推荐
相关产品推荐

