개발 환경 : Xcode 12.1

사용언어 : swift

애플은 데이터의 json으로의 encode / decode를 지원하기 위해서 codable이란 프로토콜을 지원하고 있다 (Xcode 9.0+)

developer.apple.com/documentation/swift/codable

 

Apple Developer Documentation

 

developer.apple.com

해당 프로토콜을 이용해서 쉽게 json 데이터를 다룰 수 있다. 특히 파일 저장이나 rest api 응답을 받아서 처리할 때 유용하다.

임의의 구조체를 선언하고 codable을 상속 받기만 하면 일단 사용할 준비가 완료 된다.

다음과 같은 임의의 구조체가 있다고 가정해보자.

1. 구조체를 json string으로 

해당 구조체를 이용해서 생성한 데이터를 json string으로 바꾸어서 파일까지 저장한다면 다음과 같이 구현할 수 있다.

 

json string으로 변환했을 때까지를 출력하면 다음과 같이 나온다.

 

2. json string을 구조체로

json 으로 저장된 파일에서 원하는 구조체로 읽어 내는 것은 다음과 같이 사용할 수 있다.

 

3. Date 형식의 경우

codable 프토로콜을 상속 받더라도 json 문법에 맞지 않는 Date 같은 데이터는 처리할수가 없는데

명시적으로 처리하는 방법을 알려준다면 encode/decode가 가능해진다.

encoding 할 경우 다음과 같이 추가해준다면, Date 형식을 읽고 쓰는데 문제가 없다.

 

*처음으로 코드를 캡쳐 대신에 gist를 써보니 깔끔하네요

by 무위자연 2020. 11. 19. 11:57
| 1 |