Как извлечь и сделать конкретные массивы из JSON в Swift 4? - PullRequest
0 голосов
/ 28 августа 2018

Я очень новичок в быстрой и пытаюсь извлечь информацию из ответа Json и сохранить их в несколько отдельных массивов.

Вот мой Json:

{
    "result": {
        "date": [
            {
                "TestDate": 970606
            },
            {
                "TestDate": 980703
            }
        ],
        "headId": [
            {
                "AreaCode": 200,
                "AreaName": "center"
            },
            {
                "AreaCode": 300,
                "AreaName": "Middle"
            }
        ]
    }
}

Я хочу иметь массив для AreaName и другой массив для TestDate.

Подскажите, пожалуйста, как это сделать?

1 Ответ

0 голосов
/ 28 августа 2018

Вы декодируете JSON с помощью Decodable, а затем отбираете нужные вам фрагменты:

import Foundation

struct Response: Decodable {
    struct Result: Codable {
        let headID: [HeadID]
        let date: [DateElement]

        enum CodingKeys: String, CodingKey {
            case headID = "headId"
            case date
        }
    }

    struct DateElement: Codable {
        let testDate: Int

        enum CodingKeys: String, CodingKey {
            case testDate = "TestDate"
        }
    }

    struct HeadID: Codable {
        let areaCode: Int
        let areaName: String

        enum CodingKeys: String, CodingKey {
            case areaCode = "AreaCode"
            case areaName = "AreaName"
        }
    }

    let result: Result
}

let data = """
{
  "result": {
    "headId": [
      {
        "AreaCode": 200,
        "AreaName": "center"
      },
      {
        "AreaCode": 300,
        "AreaName": "Middle"
      }
    ],
    "date": [
      {
        "TestDate": 970606
      },
      {
        "TestDate": 980703
      }
    ]
  }
}
""".data(using: .utf8)!

let response = try JSONDecoder().decode(Response.self, from: data)
let areaNames = response.result.headID.map { $0.areaName }
let testDates = response.result.date.map { $0.testDate }

print(areaNames)
print(testDates)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...