Быстрый вложенный синтаксический анализ json

Я пытаюсь разобрать json и сохранить его в объекте, но «Доступность» ничего не хранит. Может структура создана неправильно? Это кажется правильным, поскольку это массив. Может, есть библиотека, которой я пользуюсь? Я могу сохранить первую структуру Article, но ArticleOne всегда пуста. Мне нужно добавить больше комментариев, так как стек считает, что мой пост - это в основном код.

Какая у вас ошибка? Подсказка: String имеют только значения в двойных кавычках. И укажите CodingKeys для сопоставления ключей в верхнем регистре с членами структуры в нижнем регистре.

vadian 26.09.2018 19:49

Наличие всегда пусто.

user1707694 26.09.2018 19:51

Поймайте error в блоке do - catch. Он говорит вам, что именно не так. Или проверьте типы. Есть очень много несоответствий.

vadian 26.09.2018 19:52

Спасибо, Вадиан. Это ошибка, которую я получаю. typeMismatch (Swift.String, Swift.DecodingError.Context (codingPath: [_JSONKey (stringValue: «Индекс 0», intValue: 0), CodingKeys (stringValue: «Доступность», intValue: nil), _JSONKey (stringValue: «Индекс 0») , intValue: 0), CodingKeys (stringValue: "IsThisTimeSlotActive", intValue: nil)], debugDescription: "Ожидается декодирование String, но вместо этого найдено число.", lowerError: nil))

user1707694 26.09.2018 20:04
Читать ошибка, CodingKey IsThisTimeSlotActive ... Ожидается декодирование строки, но вместо этого найдено число довольно ясно. Еще раз, Только значения в двойных кавычках - String
vadian 26.09.2018 20:08
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
5
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Свойства используемой вами структуры - ArticleOne - должны быть настроены на значения в json:

struct ArticleOne: Codable {
    let DemoVehicleAvailabilityId: Int
    let DemoVehicleId: Int
    let AvailabilityDateTime: String
    let IsOnHold: Bool
    let IsBooked: Bool
    let BookedDateTime: String
    let BookedBy: String?
    let IsAvailableForDemo: Bool
    let RiderReferenceId: Int
    let IsCheckedIn: Bool
    let CheckinDateTime: String
    let HoldUntill: String
    let UpdatedDT: String
    let ReservedByName: String?
    let ReservedByEmail: String?
    let ReservedByMobileNumber: String?
    let IsReservationConfirmed: Bool
    let ReservationConfirmDateTime: String
    let IsThisTimeSlotActive: Bool
    let History: [T]
}

T - это тип элементов в History.

ArticleOne нужно обновить, я внесу необходимые исправления в ближайшее время
ielyamani 26.09.2018 20:26

@ user1707694 Я обновил ответ. Придется настроить тип History

ielyamani 26.09.2018 20:32

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