Не удается декодировать JSON с одним значением - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь декодировать JSON с одним значением. Это значение без ключа.

Alamofire
        .request(query, method: method, parameters: parameters)
        .validate()
        .responseJSON { response in
            print(response.request as Any)
        switch response.result {

        case .success(_):
            let data = response.data
            guard let data = data else {
                throw CustomExceptions.invalidJSON("No response found.")
            }
            do {
                let result = try APIHelper.deserialize(type: type, from: data)
                print(result)
            } catch {
                print(error)
            }
        case .failure(let error):
            print(error)
        }
    }

Файл JSON содержит только одно значение без ключа, т.е. true. В текущем случае это логическое значение. Результат должен быть правдой.

Но я получаю эту ошибку.

dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "The given data was not valid JSON.", underlyingError: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.})))

1 Ответ

1 голос
/ 08 апреля 2019

Невозможно декодировать одно значение с помощью протокола Decodable, поскольку базовый API JSONSerialization вызывается с без параметров , поэтому требуется тип коллекции в качестве корневого объекта.

Этов точности то, что в сообщении об ошибке

текст JSON не начинался с массива или объекта, и опция, позволяющая не устанавливать фрагменты

говорит, что Decodable не позволяет устанавливать какие-либоварианты, такие как allowFragments

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...