Сериализация JSON, если есть пустое или нулевое значение из API

Привет, я использую API для вызова с сервера списка требований, называемых требованиями доступности, прежде чем приложение будет подключено к сети. Однако, когда требования доступности имеют значение null, это приводит к сбою приложения.

Я попытался написать код ниже с моим исправлением. . Могут быть и другие способы написать это, но я надеялся использовать только сериализацию JSON. Я проверил форумы, и большинство из них имеют более старый код.

    let rquirements = company.availabilityRequirements
    if rquirements != nil {
        let data = rquirements?.data(using: .utf8)!
        do {
            if let jsonArray = try JSONSerialization.jsonObject(with: data!, options : .allowFragments) as? [Dictionary<String,Any>]
            {
                print(jsonArray) //using the json here 
                for requirements in jsonArray {
                    let hist = AvailabilityRequirements(data: requirements)
                    availabitlityReqirements.append(hist)
                }
            } else { //where our error happens if nil
                print("Bad JSON Cannot Convert Value")
                return
            }
        } catch let error as NSError {
            print(error)
            return
        }

        for requirement in availabitlityReqirements {
            if requirement.required == 1{
                requirementItems.append(requirement.displayName)

            }
        }

Я пытаюсь исправить быструю ошибку, если в требованиях доступности есть пустые или отсутствующие данные. Я надеялся, что если что-то, что я сделал, решило проблему, в противном случае мне было интересно, может ли кто-нибудь помочь мне не разбить мое приложение, если я получу ноль. Спасибо

Что такое AvailabilityRequirements(data:)?

Larme 30.05.2019 11:42

Это NSobject, который содержит строгие параметры для имени, отображаемого имени, обязательного и типа.

xRose1 30.05.2019 12:08

Итак, в этом методе есть строка, вызывающая сбой из-за нуля, не так ли?

Larme 30.05.2019 12:14
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
3
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы должны использовать try?, чтобы избежать ошибки. Весь код может быть:

if let rquirements = company.availabilityRequirements, 
    let data = rquirements.data(using: .utf8) {

    do {
        if let jsonArray = try? JSONSerialization.jsonObject(with: data, options : .allowFragments) as? [String: Any] {
            print(jsonArray) 

            for requirements in jsonArray {
                let hist = AvailabilityRequirements(data: requirements)
                availabitlityReqirements.append(hist)
            }
        }

    } catch let error as Error {
        print(error)
        return
    }

    for requirement in availabitlityReqirements {
        if requirement.required == 1 {
            requirementItems.append(requirement.displayName)
        }
    }

}

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