如何根据 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 可编码 类。
我有列表 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 可编码 类。