发出非数组格式的解析JSON



基本上我想采取以下JSON并在我的项目中使用数据。

为了解析数据,我需要创建一个结构——在过去,我对数组使用这个结构:

结构:

struct ArrayStruct: Codable {
let info1: String
let info2: String
}

数组:

[
{
"info1": "Information",
"info2": "More"
}
]

下面数据的结构是什么样子的?

{
"error": false,
"response": "",
"message": "",
"general": {
"customer": "Customer1",
"code": "CO1234",
"name": "Machine Name",
"category": "machine"
},
"details": {
"taken": "July 15th 2020",
"created": "November 2nd 2020",
"packed": "",
"delivered": ""
}
}

我使用struct与可编码的数据创建了一个结构

struct MainResponse : Codable {
let details : Detail?
let error : Bool?
let general : General?
let message : String?
let response : String?
// coding keys not required for this as the data keys are same but added just as an example

enum CodingKeys: String, CodingKey {
case details = "details"
case error = "error"
case general = "general"
case message = "message"
case response = "response"
}
}
struct Detail : Codable {
let created : String?
let delivered : String?
let packed : String?
let taken : String?
}
struct General : Codable {
let category : String?
let code : String?
let customer : String?
let name : String?
}

首先你需要像这样创建你的数据结构

struct MainResponse : Codable {
let error : Bool?
let response : String?
let message : String?
let general : General?
let details : Details?
}

让你的通用结构像这样

struct General : Codable {
let customer : String?
let code : String?
let name : String?
let category : String?
}

让你的Detail结构像这样

struct Details : Codable {
let taken : String?
let created : String?
let packed : String?
let delivered : String?
}

现在创建结构很容易,有各种工具可用,只需输入响应就会得到数据结构,使用下面的代码生成结构

quicktype.io

// MARK: - Customer
struct Customer: Codable {
let error: Bool?
let response, message: String?
let general: General?
let details: Details?
}
// MARK: - Details
struct Details: Codable {
let taken, created, packed, delivered: String?
}
// MARK: - General
struct General: Codable {
let customer, code, name, category: String?
}

最新更新