Разбор JSON файла с помощью Swift - PullRequest
0 голосов
/ 10 марта 2020

Вот общая структура команды из нашего JSON файла:

{"Team11":{
   "results":{
      "leg1":[
         {"g":"m","n":"Name1"}
       ],"leg2":[
         {"g":"m","n":"Name2"}
       ],"leg3":[
         {"g":"m","n":"Name3"}
       ],"leg4":[
         {"g":"m","n":"Name4"}
       ],"leg5":[
         {"g":"m","n":"Name5"}
       ],"leg6":[
         {"g":"m","n":"Name6"}
       ],"leg7":[
         {"g":"m","n":"Name7"},{"g":"m","n":"Name8"}
       ]
  },"tn":"TeamName",
  "division":"co"
} 
}

До сих пор мы можем анализировать категории результатов leg1, leg2, et c. Доступ к информации, содержащейся в массивах скобок, до сих пор не работал.

Моя текущая идея о том, почему она терпит неудачу, заключается в том, что мы неправильно храним команды JSON через String:Any.

Моя другая теория - я просто не смог найти правильную документацию. Любые указатели на то, где искать или советы, будут огромны!

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Обязательно добавьте, что у вас не получилось и что вы пробовали? Как новый участник, вы должны научиться задавать вопросы. Попробуйте с моим ответом ниже.

Используйте Codable для разбора JSON, как показано ниже,

let welcome = try? newJSONDecoder().decode(Welcome.self, from: jsonData)


// Welcome
struct Welcome: Codable {
    let team11: Team11

    enum CodingKeys: String, CodingKey {
        case team11 = "Team11"
    }
}

// Team11
struct Team11: Codable {
    let results: [String: [Result]]
    let tn, division: String
}

// Result
struct Result: Codable {
    let g, n: String
}

Примечание: в вашем JSON отсутствуют открытые и заканчивающиеся фигурные скобки, и я обновил это в вашем вопрос.

0 голосов
/ 10 марта 2020

Вы пытаетесь разобрать JSON вручную? Я не уверен, где вы находитесь с вашим кодом, но стандартный способ синтаксического анализа строки JSON в объекте таков:

let jsonData = myJSONString.data(using: .utf8)

Существует проблема с вашим JSON, хотя , Вы можете проверить файл JSON на этой ссылке .

...