



설치 • 사용 • 라이센스
Dynamicjson은 Swift 4.2에서 Chris Lattner가 도입 한 새로운 @dynamicMemberLookup 기능을 기반으로 한 Dynamically Typed JSON 파서입니다. 이를 통해 런타임에 해결되는 임의의 객체 멤버에 액세스 할 수 있으므로 JSON과 관련하여 Swift가 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 "
]
] 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 데이터를 통과하여 원하는 객체를 찾습니다.
예를 들어 number 또는 description 과 같은 JSON 의 실제 속성 인 키가있는 경우 다음과 같은 문자열 첨자 액세서를 사용하십시오.
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 에 대한 Paul Hudson의 멋진 문학