Разбор вложенного JSON с использованием инициализации Decodable (из декодера :) - PullRequest
0 голосов
/ 20 июня 2019

Я декодирую JSON, используя Decodable с init (из декодера :), но не могу разобрать мой вложенный JSON.

JSON, который я пытаюсь проанализировать: основной конфликт, который я считаю, - это анализ массива ребер.Цель состоит в том, чтобы получить модель, которую я могу использовать с ключом, значением и пространством имен.Потребовалось бы использовать init (from decoder:).

{
  "data": {
    "collectionByHandle": {
      "metafields": {
        "edges": [
          {
            "node": {
              "key": "city",
              "value": "Fayetteville ",
              "namespace": "shipping"
            }
          },
          {
            "node": {
              "key": "country",
              "value": "United States",
              "namespace": "shipping"
            }
          },
          {
            "node": {
              "key": "state",
              "value": "AR",
              "namespace": "shipping"
            }
          }
        ]
      }
    }
  },
  "errors": null
}

Технически это работает, но требуется использовать init (from decoder:) и возвращать модель, которая просто имеет ключ, значение и пространство имен, не имея нескольких отдельныхструктуры / классы.

 struct Shipping: Codable {
    let data: DataClass
    let errors: String?
 }

 struct DataClass: Codable {
    let collectionByHandle: CollectionByHandle
 }

 struct CollectionByHandle: Codable {
    let metafields: Metafields
 }

 struct Metafields: Codable {
    let edges: [Edge]
 }

 struct Edge: Codable {
    let node: Node
 }

 struct Node: Codable {
    let key, value, namespace: String
 }
...