일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 그래프
- Python
- UIButton
- 개발자
- Android
- Chart
- PyQt
- Storyboard
- charts
- Apple
- alamofire
- button
- androidstudio
- 개발
- Swift
- graph
- ios
- UIKit
- ui
- Xcode
- modal
- PyQt5
- Chrats
- library
- 어플리케이션
- TableView
- cocoapods
- 라이브러리
- UITableView
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] Enum을 사용한 TabBar Item 관리 (1) | 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 |
[iOS/Swift] 코드로 UIViewConroller를 UINavigationController로 감싸기 (0) | 2023.10.16 |