투케이2K

137. (swift/xcode) Codable (코더블) 사용해 jsonObject 형태 json 데이터 파싱 수행 본문

Swift

137. (swift/xcode) Codable (코더블) 사용해 jsonObject 형태 json 데이터 파싱 수행

투케이2K 2022. 11. 27. 11:30

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

    // MARK: - [json 파싱을 위한 구조체 선언]
    struct userInfoJson : Codable {
        
        
        // [전역 변수 선언]
        var name : String
        var age : String
        var addr : String
        
        
        // [구조체 생성자 초기화 실시]
        init(name: String, age: String, addr: String){
            
            // [전역 변수 = 인풋 값]
            self.name = name
            self.age = age
            self.addr = addr
        }
    }

    
    
    
    
    
    // MARK: - [테스트 메인 함수 정의 실시]
    func testMain() {
        print("")
        print("====================================")
        print("[\(self.ACTIVITY_NAME) >> testMain() :: 테스트 함수 시작 실시]")
        print("====================================")
        print("")
        
        
        /*
         -------------------------------
         [요약 설명]
         -------------------------------
         1. Codable : Swift4 부터 추가된 프로토콜이며, JSON 데이터를 간편하게 인코딩 , 디코딩을 수행할 수 있습니다
         -------------------------------
         2. Codable 은 struct, enum, class 에서 전부 사용할 수 있습니다
         -------------------------------
         3. 일반적으로 struct 를 사용해 JSON 데이터를 인코딩 , 디코딩을 수행합니다
         -------------------------------
         */
        
        
        // [로직 처리 수행]
        DispatchQueue.main.async {
            
            // [json 문자열 변수 선언 실시]
            let jsonString = "{\"name\":\"투케이\",\"age\":\"29\",\"addr\":\"seoul\"}"
            
            
            // [json 파싱 수행 실시]
            do {
                // [String 형식 json을 Data 타입으로 변환 수행 실시]
                let decodeData = jsonString.data(using: .utf8)
                
                
                // [구조체 사용해 json 개별 데이터 확인 실시]
                let decodeJson = try JSONDecoder().decode(userInfoJson.self, from: decodeData!)
                
                
                // [json 데이터 확인 실시]
                print("")
                print("====================================")
                print("[\(self.ACTIVITY_NAME) >> testMain() :: JSON 데이터 확인]")
                print("-------------------------------")
                print("[json 디코딩 [전체] :: \(decodeJson)]")
                print("-------------------------------")
                print("[json 디코딩 [name] :: \(decodeJson.name)]")
                print("[json 디코딩 [age] :: \(decodeJson.age)]")
                print("[json 디코딩 [addr] :: \(decodeJson.addr)]")
                print("====================================")
                print("")
            }
            catch {
                print("")
                print("====================================")
                print("[\(self.ACTIVITY_NAME) >> testMain() :: Exception]")
                print("error :: \(error.localizedDescription)")
                print("====================================")
                print("")
            }

        }

    }
 

[결과 출력]

 

 

반응형
Comments