티스토리 뷰

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)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함