json到快速对象

问题描述 投票:0回答:1

我正在使用一个返回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中运行的参数)。如果...

swift xcode swift4
1个回答
0
投票
我如何使用JSONDecoder将json转换为swift

快速异构类型最好用具有相关值的枚举表示。 Quicktype.io可以为您编码生成具有代码能力的结构,包括异构类型的代码,只要您为它提供所有可能情况的数组即可。 www.quicktype.io

© www.soinside.com 2019 - 2024. All rights reserved.