Как работать с вложенным JSON в Swift 4 - PullRequest
0 голосов
/ 04 мая 2018

Я делаю свой собственный "привет мир" и решил обработать JSON-ответ от URL. Я прочитал много постов о том, как обрабатывать JSON со структурами Codable, но я не могу понять, как создать структуры Codable для этого вложенного JSON.

{
    "acumulado": "sim",
    "cidades": [],
    "data": "2018-05-02",
    "ganhadores": [
        0,
        91,
        6675
    ],
    "numero": 2036,
    "proximo_data": "2018-05-05",
    "proximo_estimativa": 22000000,
    "rateio": [
        0,
        21948.81,
        427.46
    ],
    "sorteio": [
        7,
        8,
        19,
        23,
        27,
        58
    ],
    "valor_acumulado": 18189847.7
}

Это образец JSON, возвращенного из API, как мне создать Codable структуру для его обработки? PS: я знаю, что есть много постов, которые освещают это, но я не могу понять, как заставить это работать с моим образцом.

1 Ответ

0 голосов
/ 04 мая 2018

Прежде всего, ваш JSON не является действительно вложенным:

struct MyObject: Codable {
   let acumulado: String
   let cidades: [String] // ?? hard to know what data type is there
   let numero: Int
   let proximo_data: String
   let proximo_estimativa: Int
   let rateio: [Double]
   let sorteio: [Int]
   let valor_acumulado: Double
}

Каждое значение, которое может быть опущено в словаре, должно быть необязательным (например, let proximo_data: String?)

Вы также можете использовать CodingKeys для переименования переменных:

struct MyObject: Codable {
   let acumulado: String
   let cidades: [String] // ?? hard to know what data type is there
   let numero: Int
   let proximoData: String
   let proximoEstimativa: Int
   let rateio: [Double]
   let sorteio: [Int]
   let valorAcumulado: Double

   enum CodingKeys: String, CodingKey {
     case acumulado
     case cidades
     case proximoData = "proximo_data"
     case proximoEstimativa = "proximo_estimativa"
     case rateio
     case sorteio
     case valorAcumulado
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...