如何使用 Swift 创建 JSON Codable [关闭]
Posted
技术标签:
【中文标题】如何使用 Swift 创建 JSON Codable [关闭]【英文标题】:How to create JSON Codable using Swift [closed] 【发布时间】:2019-08-14 19:45:30 【问题描述】:就我而言,我正在尝试从我的 JSON 中获取数据。我发现编码是从JSON
在ios
中获取和维护数据的最简单方法之一。我想知道如何将我的 JSON 下面转换为Codable
。
下面是我的 JSON
"status": true,
"data" :
"school":[
"id":"01",
"name":"Avision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
,
"id":"01",
"name":"Bvision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
],
"college":[
"id":"01",
"name":"Avision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
,
"id":"01",
"name":"Bvision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
],
"office":[
"id":"01",
"name":"Avision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
,
"id":"01",
"name":"Bvision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
],
"organisation":[
"id":"01",
"name":"Avision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
,
"id":"01",
"name":"Bvision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
],
"central":[
"id":"01",
"name":"Avision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
,
"id":"01",
"name":"Bvision",
"date":"12 - 01 - 2018",
"group":["A","B","C"]
]
这里,多个数组的多个值可用,它会增加,有时可能有机会根据服务器数据显示空数组。如何创建codable
。
【问题讨论】:
请勿转发问题。在过去的几天里,你问了很多类似的问题。与其转发问题,不如通过编辑和添加 cmets 中部分要求的更多信息来改进您现有的问题。 @vadian 非常感谢。顺便说一句,我没有重新发布我的新疑问,但它可能看起来一样。我想在这里学习,请给我一些解决方案。 您在之前的一个问题中得到了使用quicktype.io 的建议,您尝试过吗?您是否对使用Codable
进行过任何研究?你的问题是广泛的,同时要求很多。尝试一次研究并询问一个主题。
@Joakim Danielson 我只问一个问题,如何将 JSON 以上更改为 Codable。我使用了 quick type.io 但它没有生成正确的。
是的,现在你是,很好。如果您认为 QuickType 没有生成正确的结构,那么您必须有一些代码并且知道它有什么问题以及您希望它做什么。
【参考方案1】:
这是一个起点。结构非常简单。如果Division
数组之一为空(在您之前的一个问题中提出),则相应的数组也为空。
struct Root : Decodable
let status : Bool
let data: DivisionData
struct DivisionData : Decodable
let school, college, office, organisation, central : [Division]
struct Division : Decodable
let id, name, date : String
let group : [String]
【讨论】:
但我在尝试获取根值时出错 什么错误?如果你写JSONDecoder().decode(Root.self, from:...
,结构肯定做解码问题中的JSON。但是,如果这是伪 JSON,我无法帮助您。
出现错误:libMobileGestalt MobileGestalt.c:890:此平台不支持 MGIsDeviceOneOfType。 keyNotFound(CodingKeys(stringValue: "group", intValue: nil), Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "data", intValue: nil), CodingKeys(stringValue: "central", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0)], debugDescription: "No value associated with key CodingKeys(stringValue: \"group\", intValue: nil) (\"group\").", underlyingError: nil ))
如果一个部门没有一个组,就让它成为可选let group : [String]?
你为什么不提供真实数据?
很棒的解决方案。它的工作谢谢大师:)以上是关于如何使用 Swift 创建 JSON Codable [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 创建 JSON Codable [关闭]
如何使用 SwiftyJSON(在 Swift 中)基于 JSON 对象数组创建对象数组?
如何从模型数据 Swift 创建 JSON 字符串? [关闭]
Swift 3 - 无法弄清楚如何从 jsonArray 创建 json 对象