일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- kotlin
- Xcode
- ui
- PyQt5
- library
- androidstudio
- button
- Storyboard
- 라이브러리
- UITableView
- alamofire
- 그래프
- cocoapods
- 개발자
- Chrats
- UIKit
- ios
- TableView
- 어플리케이션
- Android
- PyQt
- Python
- graph
- Apple
- UIButton
- Swift
- 개발
- modal
- Chart
- charts
Archives
- Today
- Total
Jiwift
[iOS/Swift] 구조체를 JSON 형태로 변환하기 struct to json 본문
반응형
[iOS/Swift] 구조체를 JSON 형태로 변환하기 struct to json
안녕하세요. 오늘은 Codable로 구성된 Struct를 JSON으로 변경해 보겠습니다.
struct AllUsersModel: Codable {
let users: [UserModel]
}
struct UserModel: Codable {
let name: String
let age: Int
}
우선 간단하게 Model을 두 개 만들었습니다. 사용자 정보를 담는 UserModel과 사용자를 담는 AllUsersModel로 구성했습니다. Codable을 채택하여 encode 할 수 있게 준비를 합니다.
let users: [UserModel] = [UserModel(name: "오바마", age: 34),
UserModel(name: "트럼프", age: 32),
UserModel(name: "장동건", age: 30),
UserModel(name: "미쉐린", age: 14)]
let allUsersModel: AllUsersModel = .init(users: users)
모델 속 정보는 간단하게 위와 같이 준비하였습니다.
func createJsonData(model: AllUsersModel) {
do {
let jsonData = try JSONEncoder().encode(model.users)
// 다운로드 JSON
print(String(data: jsonData, encoding: .utf8)!)
} catch {
print("실패하였습니다.")
return
}
}
그리고 위 코드가 Struct를 JSON으로 변경하는 함수입니다. 보시면 매우 간단하게 변경이 가능합니다. 이것이 Codable이 있기 때문에 가능합니다. 사실상 출력과 예외처리를 제외하면 한 줄로 끝나는 것을 볼 수 있습니다. encode 된 값은 Data 타입이기 때문에 출력하기 위해서는 String으로 다시 변환해줘야 하는데요. jsonData 자체를 JSON파일로 저장할 때는 굳이 변환을 하지 않아도 됩니다.
--
전체 코드
struct AllUsersModel: Codable {
let users: [UserModel]
}
struct UserModel: Codable {
let name: String
let age: Int
}
let users: [UserModel] = [UserModel(name: "오바마", age: 34),
UserModel(name: "트럼프", age: 32),
UserModel(name: "장동건", age: 30),
UserModel(name: "미쉐린", age: 14)]
let allUsersModel: AllUsersModel = .init(users: users)
func createJsonData(model: AllUsersModel) {
do {
let jsonData = try JSONEncoder().encode(model.users)
// 다운로드 JSON
print(String(data: jsonData, encoding: .utf8)!)
} catch {
print("실패하였습니다.")
return
}
}
createJsonData(model: allUsersModel)
Swift ) 왕초보를 위한 Codable / JSON Encoding and Decoding (tistory.com)
반응형
'iOS Dev > Swift' 카테고리의 다른 글
[iOS/Swift] FCM 토픽 구독 해제 Swift 코드 (라이브러리X) (0) | 2024.07.15 |
---|---|
[iOS/Swift] Enum을 사용한 TabBar Item 관리 (2) | 2024.05.01 |
[iOS/Swift] 카메라 앨범 권한 요청하기 및 권한 확인, camera album permission check (0) | 2023.10.21 |
[iOS/Swift] Notification 권한 확인하는 코드 , Notification Permission Check (0) | 2023.10.20 |
[iOS/Swift] 특정 월을 기준으로 기간 범위 구하기, 연/월 날짜 범위 구하기 (0) | 2023.10.19 |