[iOS] JSON Parsing

RudinP·2024년 3월 19일
0

Study

목록 보기
199/227

JSON의 형태

  • 보통 html, xml, json의 형태로 리턴된다.
  • 앱과 연동하는 API는 xml과 json중 하나를 사용하는데, xml 형식은 용량이 크고 최종 객체로 파싱하기 어렵다는 단점이 있기 때문에 보통 json을 많이 사용한다.

  • 대부분의 API는 code와 같은 서브 코드를 보내준다.
    • 이는 HTTP 상태 코드와는 다른 개념이다.
    • 실제 HTTP 접속에는 성공했으나, 객체가 없는 경우 이 서브 코드를 404를 리턴하거나 하는 방식이다.
    • 서브 코드는 정해진 것이 없기 때문에 API 문서 확인을 해야한다.
  • message: 서버에서 보내는 메시지.

JSON Decoder(Parsing)

  • 바이너리 데이터에 담긴 json 문자열을 지정한 타입으로 해석한 후 결과를 새로운 인스턴스로 리턴해줌.
  • 파싱, 또는 디코딩이라고 함.

HOW

1. JSON과 같은 구조를 가진 타입을 선언(Codable 프로토콜)

  • 클래스나 구조체로 선언. 보통 구조체를 사용.
  • Codable 프로토콜을 반드시 채택해야 한다.
    • 내부에 있는 구조체에서도 채택해야 한다.

2. JSONDecoder 객체 생성 후 디코딩

  • try-catch 사용
  • 리턴될 객체 타입 뒤에는 .self키워드를 붙여야 함.

Date 파싱


Date타입으로 바로 파싱하려면, Date Formatting이 강제된다.

Json에서 넘겨주는 값의 형태를 보면 "yyyy-MM-dd'T'HH:mm:ss"로 되어있다.

Date의 기본 형식

  • Double로 되어있으며, 초 단위의 값이다. 즉, date가 3600이라면, 2001-01-01 01:00:00 + 0000인 것이다.

Coca Timestamp

2001.1.1 00:00:00 이 기준이 되는 값 + Double

Unix Timestamp

1970.1.1 00:00:00이 기준이 되는 값 + Double

ISO 8601

2016-10-27T17:13:40+00:00 과 같은 형식

dateDecodingStrategy

  • decoder의 date파싱 전략을 설정할 수 있다.

DateFormatter 설정

  • 'T'는 날짜와 시간을 구별해주는 문자다. 반드시 작은따옴표로 감싸야 한다.

  • 제대로 파싱되는 것을 확인할 수 있다.

정리

profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글