iOS
[Swift/iOS] JSONSerialization
씌워터
2023. 9. 29. 14:25
워킷 프로젝트를 고치려다가 RxAlamofire의
JSONResponseSerializer를 보다가 JSONSerialization에 대해 봤는데 막연히 JSON을 변환시켜주는 거겠지 까지만 생각하고 맨날 JSONEncoder, Decoder만 쓰고 다뤄본적이 없는 것 같아서 찾아봤다
https://developer.apple.com/documentation/foundation/jsonserialization
JSONSerialization | Apple Developer Documentation
An object that converts between JSON and the equivalent Foundation objects.
developer.apple.com
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)