Расшифруйте определенное значение для ключа данных, используя JSONDecoder в Swift 4.0 - PullRequest
0 голосов
/ 04 июля 2019

У меня есть такие данные.Но я еще не сериализовал его в JSON

{ 
  "status":"ok",
  "totalResults":5899,
  "articles":[{//some key value pairs},
              {//some key value pairs}
   ]
}

Я хочу разобрать массив статей, используя декодируемый протокол.

Я знаю, как это сделать, если у меня есть только массив статей, но в указанном выше случае, как я могу сначала найти данные статей и проанализировать их в моей модели, используя JSONDecodable.

Ответы [ 2 ]

3 голосов
/ 04 июля 2019

Сначала объявите структуру этих типов.

struct Root : Decodable {
    let status : String
    let totalResults : Int
    let articles : [Article]
}

struct Article : Decodable {
    {//some key value pairs},
    {//some key value pairs}
}

Предположим, что строка json равна jsonStr .Теперь преобразуйте этот json в data.

let data = Data(jsonStr.utf8)

Теперь попробуйте декодировать эти данные.

let decodedStruct = fromJSON(data)

Вот определение fromJSON() метода

static func fromJSON(jsonData: Data) -> Root? {
     let jsonDecoder = JSONDecoder()
     do {
          let root = try jsonDecoder.decode(Root.self, from: jsonData)
          return root
     } catch {
          return nil
     }
}
2 голосов
/ 04 июля 2019

Словарь становится структурой, а массив словарей становится массивом структуры

struct Root : Decodable {
    let status : String
    let totalResults : Int
    let articles : [Article]
}

struct Article : Decodable {
    let aKey : AType
    let anotherKey : AnotherType
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...