티스토리 뷰
워킷 프로젝트를 고치려다가 RxAlamofire의
JSONResponseSerializer를 보다가 JSONSerialization에 대해 봤는데 막연히 JSON을 변환시켜주는 거겠지 까지만 생각하고 맨날 JSONEncoder, Decoder만 쓰고 다뤄본적이 없는 것 같아서 찾아봤다
https://developer.apple.com/documentation/foundation/jsonserialization
JSONSerialization은 Foundation 소속이다.
정의는 JSON과 Foundation Object 사이를 변환시켜주는 클래스라고 한다. JSON <-> Foundation Object 양방향 모두 사용가능하다고 한다.
그치만 Foundation Object -> JSON으로 바꿀때는 다음 속성이 있어야 함
fragmentsAllowed
옵션이 선택되어 있지 않다면 가장 최상위 객체는 NSArray나 NSDictionary여야 한다.- 모든 객체는 NSString, NSNumber, NSArray, NSDictionary, NSNull이어야 한다.
- 모든 dictionary의 Key값은 NSString의 인스턴스 여야 한다.
- Number는 NaN도 아니고 infinity도 아니다.
-> `isValidJSONObject(_:)`를 호출하거나 변환시도를 통해 변환이 가능한지를 알 수 있음
- JSON -> Dictionary 변환
let jsonData = """
{
"id": 100,
"name": "김혜수"
}
"""
let data = jsonData.data(using: .utf8)!
let dic = try JSONSerialization.jsonObject(with: data) as! [String: Any]
print(dic)
- Dictionary -> JSON 변환
let json = try JSONSerialization.data(withJSONObject: dic, options: .prettyPrinted)
print(json)
'iOS' 카테고리의 다른 글
[Error] Xcode "Cycle inside ...; ~ 오류 (0) | 2023.10.27 |
---|---|
[SwiftUI] ScrollViewReader proxy의 scrollTo에서 위치 조정하기 (1) | 2023.10.17 |
[ReactorKit] ReactorKit의 transform (0) | 2023.09.15 |
[Swift Concurrency] Actor - isolation(격리) (2) | 2023.07.08 |
[Error] 16.4 Xcode에서 has a minimum deployment target of iOS 11.0 ~ 에러나면서 빌드 에러 날때 (0) | 2023.07.04 |