



Instalación • Uso • Licencia
DynamicJson es un analizador JSON tipado dinámicamente basado en la nueva función @dynamicMemberLookup introducida por Chris Lattner en Swift 4.2. Esto nos permite acceder a miembros de objetos arbitrarios que se resuelven en tiempo de ejecución, lo que permite que Swift sea tan flexible como JavaScript cuando se trata de JSON.
if let jsonObject = try ? JSONSerialization . jsonObject ( with : data , options : [ ] ) as? [ String : Any ] ,
let user = jsonObject [ " user " ] as? [ String : Any ] ,
let username = user [ " username " ] as? String {
// ...
} let username = JSON ( data ) . user . username . string pod 'DynamicJSON' , '~> 2.0.2' (Si te encuentras con problemas, pod repo update y vuelve a intentarlo)
github "saoudrizwan/DynamicJSON"DynamicJSON.swift en su proyecto. E import DynamicJSON en los archivos que le gustaría usarlo.
Arrojar Any cosa a un objeto JSON para comenzar
let json = JSON ( Data ( ) )
JSON ( 123 )
JSON ( [ " key " : " value " ] )
JSON ( [ " element " , 1 ] )
JSON ( " Hello world " )
JSON ( false ) ... o arrojar un literal como JSON
let json = " Hello world " as JSON
123 as JSON
[ 1 , 2 , 3 ] as JSON
let user : JSON = [
" username " : " Saoud " ,
" age " : 21 ,
" address " : [
" zip " : " 12345 " ,
" city " : " San Diego "
]
] Trata los objetos JSON como si estuvieras en JavaScript Land
let dictionary = json . dictionary
let array = json [ 0 ] . cars . array
let string = json . users [ 1 ] . username . string
let nsnumber = json . creditCard . pin . number
let double = json [ 3 ] [ 1 ] . height . double
let int = json [ 0 ] . age . int
let bool = json . biography . isHuman . bool Tenga en cuenta cómo JSON en realidad no tiene propiedades como cars o users , sino que utiliza la búsqueda dinámica de miembros para atravesar sus datos JSON asociados para encontrar el objeto que está buscando.
En caso de que tenga una clave que sea una propiedad real de JSON , como number o description , por ejemplo, solo use el accesor de subíndice de cadena de así como:
let number = json . account . contact [ " number " ] . number
let description = json . user . biography [ " description " ] . string JSON se ajusta a Comparable
let json1 = JSON ( jsonData1 )
let json2 = JSON ( jsonData2 )
// Equality applies to all types (Dictionary, Array, String, NSNumber, Bool, NSNull)
let isEqual = json1 == json2
// Less/greater than only applies to NSNumbers (Double, Int) and Strings
let isLessThan = json1 < json2
let isLessThanOrEqual = json1 <= json2
let isGreaterThan = json1 > json2
let isGreaterThanOrEqual = json1 >= json2Pretty Print para fines de depuración
print ( json )Convertir a objeto sin procesar
let anyObject = json . object Convertir a Data
let data = json . data ( ) // optionally specify options...DynamicJson usa la licencia MIT. Por favor presente un problema si tiene alguna pregunta o si desea compartir cómo está utilizando DynamicJson.
Dynamicjson está en su infancia, pero proporciona la nueva forma revolucionaria de trabajar con JSON en Swift. No dude en enviar solicitudes de extracción de cualquier característica que crea que agregaría a DynamicJson y su filosofía.
Contáctame por correo electrónico [email protected], o por Twitter @sdrzn. Cree un problema si se encuentra con un error o desea que se agregue una función.
@dynamicMemberLookup