gpt4 book ai didi

arrays - 如何在json数组结构中添加附加字段

转载 作者:行者123 更新时间:2023-11-30 11:32:46 26 4
gpt4 key购买 nike

我需要添加额外的 bool 字段来制作可选择的品牌和型号表。原始 json 结构是:

    {
"brands": [
{
"id": "19",
"name": "Audi",
"sort": "1",
"num": 1,
"models": [
{
"id": "190",
"name": "TTS",
"num": 1
},
{
"id": "189",
"name": "TT",
"num": 2
},
{
"id": "188",
"name": "V8",
"num": 3
},
{
"id": "187",
"name": "SQ5",
"num": 4
}
],
......

我需要在品牌和型号结构中添加 isExpished: Bool = false。所以数组应该是这样的:

{
"brands": [
{
---> "isExpanded": false,
"id": "19",
"name": "Audi",
"sort": "1",
"num": 1,
"models": [
{
---> "isExpanded": false,
"id": "190",
"name": "TTS",
"num": 1
},

我的模型:

struct auto_data: Decodable {
var brands: [brands]
var gearbox: [gearbox]
var fuel: [fuel]
var version: String
}

struct brands: Decodable {
var id: String
var name: String
var sort: String
var num: Int
var models: [brand_models]
}

struct brand_models: Decodable {
var id: String
var name: String
var num: Int
}

获取 json 我使用:

func get_data (order_type: String, localization: String, version: String, completion: @escaping ([brands]?) -> Void) {
let encodedBodyParams = "order_type=\(order_type)&localization=\(localization)&version=\(version)"
let url = URL(string: "http://skat.az/forapi/api/get_data.php")
Alamofire.request(url!, method: .post, parameters: [:], encoding: encodedBodyParams, headers: [:]).responseJSON { (response) in
if response.result.isSuccess {
do {
let result = response.data
let data = try JSONDecoder().decode(auto_data.self, from: result!)

completion(data.brands)
} catch {
print("Error: \(error)")
}
print("models ОК!")
} else {
print("error response: \(String(describing: response.error))")
completion(nil, nil, nil)
}
}
}

我不想遍历数组的所有元素并将它们放入另一个具有正确结构的元素中。还有其他方法可以改变数组的结构吗?

最佳答案

首先请遵守结构体和类名以大写字母开头且驼峰命名的命名约定。单数形式的进一步名称结构。就语言语义而言,您正在创建一个 BrandModel,而不是一个 BrandModels

如果您需要在符合 Decodable 的结构中添加自定义成员,则必须指定 CodingKeys

在大多数情况下,将解码后的结构成员声明为常量就足够了 (let)

struct Brand: Decodable {

private enum CodingKeys : String, CodingKey {
case id, name, sort, num, models
}

var isExpanded = false
let id: String
let name: String
let sort: String
let num: Int
let models: [BrandModel]
}

struct BrandModel: Decodable {

private enum CodingKeys : String, CodingKey {
case id, name, num
}

var isExpanded = false
let id: String
let name: String
let num: Int
}

关于arrays - 如何在json数组结构中添加附加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50084804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com