투케이2K

20. (swift/xcode) json 생성 및 파싱 수행 - jsonObject , jsonArray 본문

Swift

20. (swift/xcode) json 생성 및 파싱 수행 - jsonObject , jsonArray

투케이2K 2021. 10. 14. 13:52

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT


[소스 코드]

     /*
     [요약 설명]
     1. json : key , value 로 이루어진 데이터 전송 포맷 형식입니다
     2. jsonObject : json key, value 형태로 이루어져있습니다
     3. jsonArray : 배열 형식 형태로 이루어져있습니다
     */
    
    
    
    // [테스트 메인 함수 정의 실시]
    func testMain() {
        print("[Program Start]")
        print("")
        
        // ===== [json 데이터 생성 부분] =====
        // 배열 데이터 생성 실시
        let colorArray: Array<Any> = ["red", "yellow", 10, 20]
        
        // Dictionary 사용해 json 데이터 생성 실시
        let jsonData : [String: Any] = [
            "name": "twok",
            "age": 28,
            "color" : colorArray // array to string
        ] as Dictionary
        
        // Dictionary 데이터를 json으로 변환 실시
        var jsonObj : String = ""
        do {
            let jsonCreate = try JSONSerialization.data(withJSONObject: jsonData, options: .prettyPrinted)
            
            // json 데이터를 변수에 삽입 실시
            jsonObj = String(data: jsonCreate, encoding: .utf8) ?? ""
        } catch {
            print(error.localizedDescription)
        }
        print("[create json data]")
        print("jsonObj : " , jsonObj)
        print("")
        
        
        
        
        // ===== [json 데이터 파싱 부분] =====
        // 딕셔너리 객체 생성 실시
        var json : Dictionary<String, Any> = [String : Any]()
        do {
            // 딕셔너리에 데이터 저장 실시
            json = try JSONSerialization.jsonObject(with: Data(jsonObj.utf8), options: []) as! [String:Any]
        } catch {
            print(error.localizedDescription)
        }
        // 정상적으로 json 데이터를 받은 경우
        if(json.count > 0){
            print("[parse json data]")
            print("json len : " , json.count)
            print("json data : " , json) // json 데이터
            print("json key : ", json.keys) // json key 리스트
            print("json key contains name : ", json.keys.contains("name")) // json key 포함 확인
            print("json key contains sex : ", json.keys.contains("sex")) // json key 포함 확인
            print("json key [name] value : ", json["name"] ?? "") // json value 확인
            print("json key [age] value : ", json["age"] ?? "") // json value 확인
            
            // for 문을 수행 해서 json array 배열 데이터 파싱
            let jsonArray : Array<Any> = json["color"] as! Array<Any>
            for i in stride(from: 0, through: jsonArray.count-1, by: 1) {
                print("json key [color] : " , jsonArray[i])
            }
        }
    }

[결과 출력]


[요약 설명]

/*

[요약 설명]

1. json : key , value 로 이루어진 데이터 전송 포맷 형식입니다

2. jsonObject : json key, value 형태로 이루어져있습니다

3. jsonArray : 배열 형식 형태로 이루어져있습니다

*/


 

반응형
Comments