1. JSON 이란?
일반적으로 네트워크에서 데이터를 주고 받을 시 가장 많이 사용하는 데이터 형식
Key-value 형태를 가진다
*특정 프로그래밍 언어에 속하는 것이 아니며, 대부분의 프로그래밍 언어에서 JSON 포맷의 데이터를 다룰 수 있는 기능을 제공하는 것이다
1-1. 기본적인 형태(전화번호 구조체)
[
{
"name": "A",
"phoneNumber": "010-1111-2222"
},
{
"name": "B",
"phoneNumber": "010-3333-4444"
},
{
"name": "C",
"phoneNumber": "010-5555-6666"
}
]
2. Swift 인코딩과 디코딩
인코딩: 데이터를 특정 형식으로 변환
디코딩: 인코딩된 데이터를 다시 원본으로 변환
Swift에서의 Codable 프로토콜을 채택한다는 것 → 인코딩과 디코딩이 될 수 있다
엑스코드에서 Codable을 열어보면 아래와 같이 확인할 수 있다
아래 예제에서 PhoneBook 구조체는 인코딩과 디코딩이 가능한 객체가 된다는 것을 의미한다
2-1. Json 형식의 데이터에서 Swift 로 데이터를 디코딩해서 추출하는 과정
아래 예제에서 jsonString은 String으로 Json형식의 데이터를 생성한 것으로 진짜 Json은 아니다
import Foundation
struct PhoneBook: Codable {
let name: String
let phoneNumber: String
}
// string 으로 json 모양의 데이터를 생성.
let jsonString = """
[
{
"name": "Adam",
"phoneNumber": "010-1111-2222"
},
{
"name": "Eve",
"phoneNumber": "010-3333-4444"
},
{
"name": "Abel",
"phoneNumber": "010-5555-6666"
}
]
"""
// jsonString 으로 jsonData 를 생성
// using .uif8 는 인코딩 방식 중 하나
let jsonData = jsonString.data(using: .utf8)!
// Swift 가 제공하는 JSON 디코더
let jsonDecoder = JSONDecoder()
// JSON -> Codable 디코딩 진행
do {
let phoneBooks = try jsonDecoder.decode([PhoneBook].self, from: jsonData)
for phoneBook in phoneBooks {
print("name: \(phoneBook.name), phoneNumber: \(phoneBook.phoneNumber)")
}
} catch {
print("JSON 디코딩 실패")
}
'🍎 Swift > iOS 학습 노트' 카테고리의 다른 글
[강의노트👩🏻💻] URL의 구조 (0) | 2024.07.30 |
---|---|
[강의노트👩🏻💻] API(Application Programming Interface) (0) | 2024.07.30 |
[Swift 🍎] @objc (1) | 2024.07.22 |
[강의노트👩🏻💻] CoreData 코어 데이터 (4) | 2024.07.11 |
[Swift 🍎] configureUI() (0) | 2024.07.10 |