如何根据 json 构建结构

How to construct struct based on json

我有列表 Json 结果基于我创建的结构,但在解析时出现错误类型不匹配。在代码中创建结构时我找不到问题所在

我创建了基于 json 的结构,但它对我不起作用

["status": "1",
"error": false,
"data": [
    {
        "order_id": "11",
        "order_unique_id": "ORDR-1001",
        "store_name": "24X7",
        "otp_store": "781103",
        "product": [
            "Product One",
            "Product Two"
        ],
        "qty": [
            "1",
            "3"
        ],
        "user_details": {
            "name": "test",
            "number": "98145314586",
            "landmark": "test",
            "area": "Bow East",
            "pincode": "E3 9EG",
            "place": "Home"
        },
        "status": "2",
        "date": "2018-12-13",
        "time": "14:37:57"
    }]


struct RunnerStatus: Decodable {
var status: String
var error: Bool
var data: [Runner]
}

struct Runner: Decodable {
var order_id: String
var order_unique_id: String
var store_name: String
var otp_store: String
var product: [Product]
var qty: [Quantity]
var user_details: [UserDetails]
var status: String
var date: String
var time: String
}

struct Product: Decodable {
var ProductName: String
}

struct Quantity: Decodable {
var qty: String
}

struct UserDetails: Decodable {
var name: String
var number: String
var landmark: String
var area: String
var pincode: String
var place: String
}

所有结构都应与关联的 value/Data

绑定

我觉得你的结构应该是这样的:

// 1
struct RootClass : Codable {

    let data : [RunnerData]?
    let error : Bool?
    let status : String?
}

// 2
struct RunnerData : Codable {

    let date : String?
    let orderId : String?
    let orderUniqueId : String?
    let otpStore : String?
    let product : [String]?
    let qty : [String]?
    let status : String?
    let storeName : String?
    let time : String?
    let userDetails : UserDetail?

    enum CodingKeys: String, CodingKey {
        case date
        case orderId = "order_id"
        case orderUniqueId = "order_unique_id"
        case otpStore = "otp_store"
        case product
        case qty
        case status
        case storeName = "store_name"
        case time
        case userDetails = "user_details"
    }
}

// 3
struct UserDetail : Codable {

    let area : String?
    let landmark : String?
    let name : String?
    let number : String?
    let pincode : String?
    let place : String?
}

希望对您有所帮助。如果您还有任何疑问,请告诉我。

如果您比以前手动创建 JSON 结构,您应该对制作结构有适当的了解。否则影响JSON解码。有很多网站可以让您的 json 在线编码 类,其中之一是:http://www.jsoncafe.com/

使用此网站创建您的 swift 可编码 类。