



インストール•使用法•ライセンス
DynamicJsonは、Swift 4.2でChris Lattnerによって導入された新しい@dynamicMemberLookup機能の上に構築された動的に型付けされたJSONパーサーです。これにより、実行時に解決される任意のオブジェクトメンバーにアクセスでき、JSONに関してはJavaScriptと同じくらい柔軟になります。
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' (問題が発生した場合は、 pod repo updateともう一度やり直してください)
github "saoudrizwan/DynamicJSON"DynamicJSON.swiftプロジェクトにドラッグアンドドロップします。 import DynamicJSON 。
JSONオブジェクトにAnyを投げて始める
let json = JSON ( Data ( ) )
JSON ( 123 )
JSON ( [ " key " : " value " ] )
JSON ( [ " element " , 1 ] )
JSON ( " Hello world " )
JSON ( false ) ...または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 "
]
] JSONオブジェクトをJavaScriptの土地にいるように扱います
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 JSON実際にcarsやusersなどのプロパティを持っていないことに注意してください。代わりに、動的なメンバールックアップを使用して、関連するJSONデータを通過して探しているオブジェクトを見つけます。
たとえば、 JSONの実際のプロパティであるキーがJSONの実際のdescriptionである場合、たとえば、次のようなnumber列subscriptアクセサを使用するだけです。
let number = json . account . contact [ " number " ] . number
let description = json . user . biography [ " description " ] . string JSON 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 >= json2デバッグの目的でかなり印刷
print ( json )生のオブジェクトに変換します
let anyObject = json . object Dataに変換します
let data = json . data ( ) // optionally specify options...DynamicJSONはMITライセンスを使用します。質問がある場合、またはDynamicJsonの使用方法を共有したい場合は、問題を提出してください。
DynamicJsonは初期段階にありますが、SwiftでJSONと協力するための革新的な新しい方法の裸体を提供します。 DynamicJsonとその哲学に追加されると思われる機能のプルリクエストをお気軽に送信してください。
メールで私に連絡してください[email protected]、またはtwitter @sdrznで。バグに遭遇した場合、または機能を追加したい場合は、問題を作成してください。
@dynamicMemberLookupをめぐるポール・ハドソンの素晴らしい文学