我正在使用一个返回json响应的api,每次响应看起来都有些不同(取决于我在API中运行的参数)。如果每次[我需要的字段出现在所有响应中,它只是我什至不需要的其他一些随机字段]时,如果json的结构稍有变化,我如何使用JSONDecoder将json转换为swift?
这是2个回复的示例
{
"id": "EN_DE00013180",
"source": "global",
"language": "en",
"version": 1,
"headword": {
"text": "unexpectedly",
"pronunciation": {
"value": "ˌʌnɪkˈspɛktɪdli"
},
"pos": "adverb"
},
"senses": [
{
"id": "EN_SE00022038",
"translations": {
"br": {
"text": "inesperadamente"
},
"dk": {
"text": "uventet"
},
"es": {
"text": "inesperadamente"
},
"fr": {
"text": "à l'improviste"
},
"ja": {
"text": "意外(いがい)にも",
"alternative_scripts": {
"romaji": "igai ni mo"
}
},
"no": {
"text": "uventet"
},
"sv": {
"text": "oväntat"
}
},
"examples": [
{
"text": "guests who arrived unexpectedly",
"translations": {
"br": {
"text": "convidados que chegaram inesperadamente"
},
"dk": {
"text": "gæster, som ankom uventet"
},
"es": {
"text": "@@@@@"
},
"fr": {
"text": "des invités qui sont arrivés à l'improviste"
},
"ja": {
"text": "予想外にやってきた客",
"alternative_scripts": {
"romaji": "yosoogai ni yattekita kyaku"
}
},
"no": {
"text": "gjester som kom uventet"
},
"sv": {
"text": "gäster som kom oväntat"
}
}
}
]
}
],
"related_entries": [
"EN_DE00013179"
]
}
这里是第二个
{
"id": "EN_DE00013182",
"source": "global",
"language": "en",
"version": 1,
"headword": {
"text": "unfairly",
"pronunciation": {
"value": "ʌnˈfɛərli"
},
"pos": "adverb"
},
"senses": [
{
"id": "EN_SE00022040",
"translations": {
"br": {
"text": "injustamente"
},
"dk": {
"text": "uretfærdigt"
},
"es": {
"text": "injustamente"
},
"fr": [
{
"text": "de manière injuste/irrégulière"
},
{
"text": "injustement"
}
],
"ja": {
"text": "不公平(ふこうへい)に",
"alternative_scripts": {
"romaji": "fukoohee ni"
}
},
"no": [
{
"text": "urettferdig"
},
{
"text": "på urettferdig vis"
}
],
"sv": [
{
"text": "orättvist"
},
{
"text": "oschyst"
}
]
},
"examples": [
{
"text": "unfairly treated/criticized/punished",
"translations": {
"br": {
"text": "injustamente tratado/criticada/punido"
},
"dk": {
"text": "uretfærdigt behandlet/kritiseret/straffet"
},
"es": {
"text": "@@@@@"
},
"fr": {
"text": "traité de manière injuste / critiqué/puni injustement"
},
"ja": {
"text": "不公平に扱われる / 批判される / 処罰される",
"alternative_scripts": {
"romaji": "fukoohee ni atsukawareru / hihan sareru / shobatsu sareru"
}
},
"no": {
"text": "urettferdig behandlet/kritisert/straffet"
},
"sv": {
"text": "orättvist behandlad/kritiserad/bestraffad"
}
}
},
{
"text": "a trial that was conducted unfairly",
"translations": {
"br": {
"text": "um julgamento que foi conduzido injustamente"
},
"dk": {
"text": "en retsag, der var udført uretfærdigt"
},
"es": {
"text": "@@@@@"
},
"fr": {
"text": "un procès qui a été instruit de manière irrégulière"
},
"ja": {
"text": "不公平に行われた裁判",
"alternative_scripts": {
"romaji": "fukoohee ni okonawareta saiban"
}
},
"no": {
"text": "en rettssak som ble gjennomført på urettferdig vis"
},
"sv": {
"text": "en rättegång som genomfördes på ett ohederligt sätt"
}
}
}
]
}
],
"related_entries": [
"EN_DE00013181"
]
}
我正在使用一个返回json响应的api,每次响应看起来都有些不同(取决于我在API中运行的参数)。如果...
快速异构类型最好用具有相关值的枚举表示。 Quicktype.io可以为您编码生成具有代码能力的结构,包括异构类型的代码,只要您为它提供所有可能情况的数组即可。 www.quicktype.io