



Installation • Utilisation • Licence
Dynamicjson est un analyse JSON dynamiquement typé construit sur la nouvelle fonctionnalité @dynamicMemberLookup introduite par Chris Lattner dans Swift 4.2. Cela nous permet d'accéder à des membres d'objets arbitraires qui sont résolus au moment de l'exécution, permettant à Swift d'être aussi flexible que JavaScript en ce qui concerne 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 vous rencontrez des problèmes, pod repo update et réessayez)
github "saoudrizwan/DynamicJSON"DynamicJSON.swift dans votre projet. Et import DynamicJSON dans les fichiers que vous souhaitez l'utiliser.
Jetez Any quoi dans un objet JSON pour commencer
let json = JSON ( Data ( ) )
JSON ( 123 )
JSON ( [ " key " : " value " ] )
JSON ( [ " element " , 1 ] )
JSON ( " Hello world " )
JSON ( false ) ... ou jetez un littéral comme 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 "
]
] Traitez les objets JSON comme si vous étiez dans 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 Notez comment JSON n'a pas réellement de propriétés comme cars ou users , mais il utilise la recherche dynamique des membres pour traverser ses données JSON associées pour trouver l'objet que vous recherchez.
Dans le cas où vous avez une clé qui est une propriété réelle de JSON , comme number ou description par exemple, utilisez simplement l'accessoire d'indice de chaîne comme tel:
let number = json . account . contact [ " number " ] . number
let description = json . user . biography [ " description " ] . string JSON se conforme à 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 >= json2Jolie imprimer à des fins de débogage
print ( json )Convertir en objet brut
let anyObject = json . object Convertir en Data
let data = json . data ( ) // optionally specify options...Dynamicjson utilise la licence MIT. Veuillez déposer un problème si vous avez des questions ou si vous souhaitez partager comment vous utilisez Dynamicjson.
Dynamicjson en est à ses balbutiements, mais fournit les œillères à nu d'une nouvelle façon révolutionnaire de travailler avec JSON à Swift. N'hésitez pas à envoyer des demandes de traction de toutes les fonctionnalités qui, selon vous, ajouteraient à Dynamicjson et à sa philosophie.
Contactez-moi par e-mail [email protected], ou par Twitter @Sdrzn. Veuillez créer un problème si vous rencontrez un bogue ou si vous souhaitez qu'une fonctionnalité soit ajoutée.
@dynamicMemberLookup