Заполнить модель результатами API

Я хочу заполнить свою модель разделом «полезная нагрузка» с моей конечной точки. Я создал модель DataResponse, которая имеет свойство записи Payload. Я хотел бы получить только данные из раздела полезной нагрузки конечной точки API. Мой сетевой вызов неверен, и я, должно быть, неправильно структурирую свои модели, но я не уверен, что нужно исправить. Я не уверен, имеет ли это значение, но моя конечная точка отображалась как XML, и я преобразовал ее в JSON ниже.

 struct DataResponse: Decodable {
        let record: Payload
 }

 struct Payload: Decodable {
        let SoldToday: Int
 }

    let url = URL(string: "https:------")!

    URLSession.shared.dataTask(with: url) {data, response, error in
guard error == nil,
      let data = data else {
          print(error)
          return
      }
    let dataResponse = try? JSONDecoder().decode(DataResponse.self, from: data)
if let dataResponse = dataResponse {
    print(dataResponse.record.SoldToday)
}

  }.resume()

Это содержимое моей конечной точки URL:

 {
   "action": "API_DoQuery",
   "errcode": "0",
   "errtext": "No error",
   "dbinfo": {
      "name": "Daily",
      "desc": []
   },
   "variables": {
      "__iol": "&rand='+new Date().getTime())};\">",
      "__script": "&rand='+new Date().getTime());void(0);",
      "iol": "<img qbu='module' src='/i/clear2x2.gif' onload=\"javascript:if(typeof QBU=='undefined'){QBU={};$.getScript(gReqAppDBID+'?a=dbpage&pagename=",
      "script": "javascript:$.getScript(gReqAppDBID+'?a=dbpage&pagename="
   },
   "chdbids": [],
   "record": {
      "payload": "{    \"RecordID\": 04-22-2022,    \"SoldToday\": 18,    \"ContractToday\": 869327,    \"KWToday\": 160960  }",
      "update_id": "1647544685640"
   }
}
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вам нужно исправить 2 вещи, чтобы иметь возможность декодировать данные json:

Вам нужны модели, которые соответствуют вашим данным json. Такие как:

struct DataResponse: Decodable {
       let record: Record
}

struct Record: Decodable {
       let payload: Payload
}

struct Payload: Decodable {
       let SoldToday: Int
}

И вам нужно убедиться, что ваши данные действительны json. В настоящее время variables недействителен, аналогично для payload в record, (заключено в кавычки). Как только они были исправлены, я смог успешно декодировать данные в своих тестах.

Обратите внимание, что если ваша конечная точка предоставляет вам XML, то, вероятно, лучше конвертировать XML в ваши модели напрямую, без необходимости конвертировать в json. На github есть несколько библиотек парсеров XML.

Другие вопросы по теме