투케이2K

80. (ios/swift) 세부 json 데이터 생성 및 파싱 수행 실시 (jsonObject in jsonObject) 본문

IOS

80. (ios/swift) 세부 json 데이터 생성 및 파싱 수행 실시 (jsonObject in jsonObject)

투케이2K 2021. 12. 18. 18:34

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드 : JSON 데이터 생성]

        // [JSON 데이터 만들기 수행 실시]
        var dicTotalData : Dictionary<String, Any> = [String : Any]()
        
        
        // [세부 json 삽입]
        var dicAosData : Dictionary<String, Any> = ["package":"com.android.chrome"]
        
        
        // [세부 json 삽입]
        var dicIosData : Dictionary<String, Any> = [String : Any]()
        dicIosData["appScheme"] = "googlechrome://"
        dicIosData["id"] = "id535886823"
        
        
        // [전체 json 에 세부 json 삽입]
        dicTotalData["android"] = dicAosData
        dicTotalData["ios"] = dicIosData
        
        
        // [json 형식 string 데이터 만들기]
        var jsonTotalObj : String = ""
        do {
            let jsonCreate = try JSONSerialization.data(withJSONObject: dicTotalData, options: .prettyPrinted)
            
            // json 데이터를 변수에 삽입 실시
            jsonTotalObj = String(data: jsonCreate, encoding: .utf8) ?? ""
        } catch {
            print(error.localizedDescription)
        }
        
        
        // [json 파싱 메소드 호출]
        self.testJS(receiveData : jsonTotalObj.description)
 

[소스 코드 : JSON 데이터 파싱]

    func testJS(receiveData : String){
        print("")
        print("===============================")
        print("[A_Main >> testJS() :: JSON 데이터 파싱 수행 실시]")
        print("데이터 :: ", receiveData)
        print("===============================")
        print("")
        
        // -----------------------------------------
        
        // [딕셔너리 객체 생성 실시 및 전체 json 데이터 받음]
        var jsonDic : Dictionary<String, Any> = [String : Any]()
        do {
            // 딕셔너리에 데이터 저장 실시
            jsonDic = try JSONSerialization.jsonObject(with: Data(receiveData.utf8), options: []) as! [String:Any]
        } catch {
            print("")
            print("===============================")
            print("[A_Main >> testJS() :: JSON 데이터 파싱 수행 실시]")
            print("catch [1] :: ", error.localizedDescription)
            print("===============================")
            print("")
        }
        
        // -----------------------------------------
        
        // [정상적으로 전체 json 데이터를 받은 경우]
        if(jsonDic.count > 0){
            print("")
            print("===============================")
            print("[A_Main >> testJS() :: JSON 데이터 파싱 수행 실시]")
            print("jsonDic [전체 데이터] :: ", jsonDic.description)
            print("===============================")
            print("")
            
            // [세부 json 데이터 받기 실시]
            if jsonDic.keys.contains("ios") == true { //키값이 존재할 경우
                do {
                    // [딕셔너리에 세부 데이터 저장 실시]
                    var dicData : Dictionary<String, Any> = jsonDic["ios"] as! Dictionary<String, Any>
                    
                    // 패키지명 및 앱 아이디 확인 실시
                    let packages = dicData["appScheme"] as! String // [googlechrome://]
                    let id = dicData["id"] as! String // [id535886823]
                    
                    // 외부앱 열기 수행 실시
                    self.goAppRun(_scheme: packages, _id: id)
                    
                }
                catch {
                    print("")
                    print("===============================")
                    print("[A_Main >> testJS() :: JSON 데이터 파싱 수행 실시]")
                    print("catch [2] :: ", error.localizedDescription)
                    print("===============================")
                    print("")
                }
            }
        }
        
        // -----------------------------------------
    }
 

[결과 출력]

 

 

반응형
Comments