Использование JSONSerialization() для динамического определения логических значенийIOS

Программируем под IOS
Ответить
Anonymous
 Использование JSONSerialization() для динамического определения логических значений

Сообщение Anonymous »

Я получаю строку JSON с сервера (или файла).

Я хочу проанализировать эту строку JSON и динамически определить каждый из типов значений.

Однако, когда дело доходит до логических значений, JSONSerialization просто преобразует значение в 0 или 1, и код не может этого сделать. различать, является ли «0» Double, Int или Bool.

Я хочу распознать, является ли значение типом Bool, не зная явно, что конкретный ключ соответствует значению Bool. Что я делаю не так или что можно было бы сделать по-другому?

Код: Выделить всё

// What currently is happening:
let jsonString = "{\"boolean_key\" : true}"
let jsonData = jsonString.data(using: .utf8)!
let json = try! JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) as! [String:Any]

json["boolean_key"] is Double // true
json["boolean_key"] is Int // true
json["boolean_key"] is Bool // true

// What I would like to happen is below (the issue doesn't happen if I don't use JSONSerialization):
let customJson: [String:Any] = [
"boolean_key" : true
]

customJson["boolean_key"] is Double // false
customJson["boolean_key"] is Int // false
customJson["boolean_key"] is Bool // true
Связано:
  • Как заставить NSJSONSerialization выводить логическое значение как true или false?
  • Есть ли правильный способ определить, что NSNumber получен из Bool с использованием Swift?


Подробнее здесь: https://stackoverflow.com/questions/496 ... ean-values
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»