DynamicJSON
1.0.0




安裝•使用•許可證
Dynamicjson是一款動態鍵入的JSON Parser,構建了Chris Lattner在Swift 4.2中引入的新的@dynamicMemberLookup功能。這使我們能夠訪問在運行時解決的任意對象成員,從而使Swift在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 。
將Any東西扔進JSON對像開始
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 "
]
]像您在JavaScript Land一樣對待JSON對象
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的實際屬性,例如number或description ,只需使用字符串訂閱訪問者:
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還處於起步階段,但提供了一種革命性的與JSON合作的革命性新方法。請隨時發送有關您認為會添加到Dynamicjson及其理念的任何功能的拉動請求。
通過電子郵件[email protected]與我聯繫,或通過Twitter @sdrzn與我聯繫。如果您遇到錯誤或希望添加功能,請創建問題。
@dynamicMemberLookup上的精彩文學