Notice
Recent Posts
Recent Comments
Link
투케이2K
52. (swift/xcode) Codable (코더블) 사용해 json 데이터 생성 및 파싱 수행 실시 - struct 구조체 사용 본문
Swift
52. (swift/xcode) Codable (코더블) 사용해 json 데이터 생성 및 파싱 수행 실시 - struct 구조체 사용
투케이2K 2022. 3. 2. 13:51[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[C_JsonCodable.swift 파일]
import Foundation
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. Codable 사용해 json 인코딩 , 디코딩 수행 클래스
// -----------------------------------------
*/
// MARK: - [Codable 설명]
/*
// -----------------------------------------
1. Codable : Swift4 부터 추가된 프로토콜이며, JSON 데이터를 간편하게 인코딩 , 디코딩을 수행할 수 있습니다
2. Codable 은 struct, enum, class 에서 전부 사용할 수 있습니다
3. 일반적으로 struct 를 사용해 JSON 데이터를 인코딩 , 디코딩을 수행합니다
// -----------------------------------------
*/
// MARK: - [JSON 인코딩 수행 실시]
struct jsonEncodeStruct : Codable {
var name : String
var age : Int
var phone : String
var sex : Bool
// [구조체 생성자 초기화 실시]
init(name: String, age: Int, phone: String, sex: Bool){
// [전역 변수 = 인풋 값]
self.name = name
self.age = age
self.phone = phone
self.sex = sex
}
}
// MARK: - [JSON 디코딩 수행 실시]
struct jsonDecodeStruct : Codable {
var name : String
var age : Int
var phone : String
var sex : Bool
// [구조체 생성자 초기화 실시]
init(name: String, age: Int, phone: String, sex: Bool){
// [전역 변수 = 인풋 값]
self.name = name
self.age = age
self.phone = phone
self.sex = sex
}
}
[testMain 함수]
func testMain(){
print("")
print("===============================")
print("[ViewController >> testMain() :: 테스트 함수 수행 실시]")
print("===============================")
print("")
// MARK: [JSON 인코딩 수행 실시]
var jsonEncode = ""
do {
// [구조체 데이터 정의]
let encodeData = jsonEncodeStruct(name: "투케이", age: 28, phone: "010-1234-5678", sex: true)
// [json 데이터 생성]
let jsonCreate = try JSONEncoder().encode(encodeData)
// [json 데이터를 변수에 삽입 실시]
jsonEncode = String(data: jsonCreate, encoding: .utf8) ?? ""
print("")
print("===============================")
print("[json 인코딩 :: \(jsonEncode)]")
print("===============================")
print("")
} catch {
print("")
print("===============================")
print("[error [에러] :: \(error.localizedDescription)]")
print("===============================")
print("")
}
// MARK: [JSON 디코딩 수행 실시]
do {
// [String 형식 json을 Data 타입으로 변환 수행 실시]
let decodeData = jsonEncode.data(using: .utf8)
// [구조체 사용해 json 개별 데이터 확인 실시]
let decodeJson = try JSONDecoder().decode(jsonDecodeStruct.self, from: decodeData!)
print("")
print("===============================")
print("[json 디코딩 [name] :: \(decodeJson.name)]")
print("[json 디코딩 [age] :: \(decodeJson.age)]")
print("[json 디코딩 [phone] :: \(decodeJson.phone)]")
print("[json 디코딩 [sex] :: \(decodeJson.sex)]")
print("===============================")
print("")
} catch {
print("")
print("===============================")
print("[error [에러] :: \(error.localizedDescription)]")
print("===============================")
print("")
}
}
[결과 출력]
반응형
'Swift' 카테고리의 다른 글
54. (swift/xcode) split , components 사용해 문자열 데이터 분리해 배열 (array) 데이터 삽입 실시 (0) | 2022.03.09 |
---|---|
53. (swift/xcode) Codable (코더블) 사용해 json , array , array json 형태 데이터 생성 및 파싱 수행 (0) | 2022.03.06 |
51. (swift/xcode) lazy (래지) 변수 선언 및 데이터 출력 수행 실시 (0) | 2022.03.02 |
50. (swift/xcode) Int random 사용해 랜덤 정수 값 데이터 출력 실시 (0) | 2022.03.02 |
49. (swift/xcode) array max , min 사용해 배열 데이터 최대값 , 최소값 출력 실시 (0) | 2022.03.02 |
Comments