JSON이란?

zoe·2021년 12월 5일
1
post-custom-banner

json이란?

메모리에 있는 객체를 사람도 읽을 수 있는 문자열로 표현하는 방법론
약속된 형태의 0과1로 바꿔서 -> 다른 컴퓨터에 전달하고 다시 0과1로 변환해내자
사람이 읽기도 편하고, 컴퓨터 끼리 똑같은 객체를 주고 받기도 편하다
디스크에 저장될 때는 사람이 읽을 수 있는 문자로 저장되는것이 아니라, 0과1로 저장된다

  • { }: 객체(딕셔너리)
  • [ ]: 배열
  • " ": 문자열
  • 문자열 외: 숫자

Read Data From Arrays

When the JSON you use contains a homogeneous array of elements, you add a conformance to the Codable protocol on the individual element's type.

To decode or encode the entire array, you use the syntax [Element].self.
배열 전체를 인코딩/디코딩 하려면 [Element].self 이렇게 작성

let decoder = JSONDecoder()
let products: [GroceryProduct] = try decoder.decode([GroceryProduct].self, from: jsonData)

JSON 배열에 GreatProduct 인스턴스가 아닌 요소가 하나라도 포함되어 있으면 디코딩이 실패합니다.
이렇게 하면 JSON 배열이 제공자가 제공한 보증에 대한 오탈자나 오해 때문에 데이터가 자동으로 손실되는일이 없습니다

Change Key Names

Names you use in your Swift code don't always match the names in JSON that refer to the same values. When working with the JSONEncoder and JSONDecoder classes in Swift, you can easily adopt conventional Swift names in your data types even when using JSON that requires the use of other names.
Swift 코드에서 사용하는 이름이 항상 동일한 값을 참조하는 JSON의 이름과 일치하지 않습니다. Swift에서 JSONNcoder 및 JSONDecoder 클래스로 작업할 때 다른 이름을 사용해야 하는 JSON을 사용하는 경우에도 데이터 유형에 기존 Swift 이름을 쉽게 채택할 수 있습니다.

To create a mapping between Swift names and JSON names, you use a nested enumeration named CodingKeys within the same type that adds conformance to Codable, Encodable, or Decodable.
Swift 이름과 JSON 이름 간의 매핑을 만들려면 Codable, Encodable 또는 Decodable에 준수를 추가하는 동일한 유형 내에 CodingKeys라는 중첩 열거형을 사용합니다.

In the example below, see how the Swift property name points is mapped to and from the name "product_name" when the property is encoded and decoded.
아래 예에서는 속성을 인코딩 및 디코딩할 때 Swift 속성 이름 포인트가 "product_name" 이름으로 매핑되는 방법을 확인하십시오.

원래 josn 데이터와 똑같은 이름을 쓰더라도 GroadyProduct 구조에 필요한 값이기 때문에 CodingKeys 열거에 포함시킬 수 있습니다.

Access Nested Data (Intermidiate type)

외부 소스 또는 기존 로컬 형식에서 JSON을 사용하는 앱을 작성할 수 있습니다. 두 경우 모두 앱에서 모델링 중인 개념의 구조와 JSON의 제작자가 모델링한 개념 사이의 불일치를 발견할 수 있습니다.

Swift 프로그램에 대한 데이터의 논리적 번들이 사용자가 사용하는 JSON의 여러 중첩된 개체 또는 배열에 분산되어 있는 경우가 있습니다. 당신이 읽고 있는 JSON의 구조와 일치하는 해독 가능한 타입을 작성하여 구조적 갭을 메우세요.

디코딩 가능한 유형은 디코딩하기에 안전한 중간 유형의 역할을 합니다. 나머지 앱에서 사용할 유형의 이니셜라이저에서 데이터 원본 역할을 합니다.

중간 유형을 사용하면 다양한 모양의 외부 JSON과의 호환성을 유지하면서 자체 코드에서 가장 자연스러운 유형을 사용할 수 있습니다.

Merge Data from Different Depths

JSON 파일이나 API에서 사용하는 데이터 모델이 앱에서 사용 중인 모델과 일치하지 않는 경우가 있습니다. 이 경우 인코딩 및 디코딩 시 개체를 JSON에서 병합하거나 분리해야 할 수 있습니다.

결과적으로, 단일 인스턴스의 인코딩 또는 디코딩은 JSON 객체의 계층 구조에서 위나 아래로 도달하는 것을 포함한다.

Optional타입을 디코딩 해주는 메서드

docode 관련 메서드


지정된 키 타입으로 입력된 컨테이너에 표현된 지정된 키에 대해 저장된 데이터를 반환합니다.

profile
개발하면서 마주친 문제들을 정리하는 공간입니다.
post-custom-banner

1개의 댓글

comment-user-thumbnail
2021년 12월 6일

조이짱

답글 달기