투케이2K

75. (swift/xcode) [유틸 파일] JsonArray JsonObject 형태 데이터를 Array Dictionary 형태로 변환 실시 본문

Swift

75. (swift/xcode) [유틸 파일] JsonArray JsonObject 형태 데이터를 Array Dictionary 형태로 변환 실시

투케이2K 2022. 4. 21. 20:22

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[소스 코드]

    // MARK: - [배열 + 딕셔너리 데이터를 JsonArray + JsonObject 형태 String 문자열 데이터 반환 실시]
    func arrayDic_To_jsonArrayInJsonObj_String(list: Array<Any>) -> String {
        
        /*
        // -----------------------------------------
        [arrayDic_To_jsonArrayInJsonObj_String 메소드 설명]
        // -----------------------------------------
        1. 배열 + 딕셔너리 데이터를 JsonArray + JsonObject 형태 String 문자열 데이터 반환 실시
        // -----------------------------------------
        2. 호출 방법 :
         // [배열 선언]
         var anyArray : Array<Any> = []

         
         // [딕셔너리 선언]
         var dicData : Dictionary<String, Any> = [String : Any]()
         dicData["name"] = "TWOK"
         dicData["age"] = 29
         
         
         // [배열에 딕셔너리 객체 삽입 실시]
         anyArray.append(dicData)

         
         // [유틸 파일 호출 실시]
         C_Util().arrayDic_To_jsonArrayInJsonObj_String(list: anyArray)
        // -----------------------------------------
        3. 리턴 반환 :
         return :: [
           {
             "age" : 29,
             "name" : "TWOK"
           }
         ]
        // -----------------------------------------
        */
        
        
        // [초기 리턴 데이터 변수 선언 실시]
        var returnData = ""
        
        
        // [인풋 데이터 널 체크 수행 실시]
        if list != nil && list.count>0 && list.isEmpty == false {
            do {
                // [json 데이터 생성 실시]
                let jsonCreate = try JSONSerialization.data(withJSONObject: list, options: .prettyPrinted)
                returnData = String(data: jsonCreate, encoding: .utf8) ?? ""
            } catch {
                print("")
                print("====================================")
                print("[C_Util >> arrayDic_To_jsonArrayInJsonObj_String() :: [배열 + 딕셔너리] >> [JsonArray + JsonObject] 형태 String 문자열 반환]")
                print("-------------------------------")
                print("catch :: \(error.localizedDescription)")
                print("====================================")
                print("")
            }
        }
        
        
        // [로그 출력 실시]
        print("")
        print("====================================")
        print("[C_Util >> arrayDic_To_jsonArrayInJsonObj_String() :: [배열 + 딕셔너리] >> [JsonArray + JsonObject] 형태 String 문자열 반환]")
        print("-------------------------------")
        print("input :: \(list.description)")
        print("-------------------------------")
        print("return :: \(returnData)")
        print("====================================")
        print("")
        
        
        // [리턴 데이터 반환 실시]
        return returnData
    }
    
    
    
    
    
    // MARK: - [JsonArray + JsonObject 형태 String 데이터를 배열 + 딕셔너리 데이터로 반환 실시]
    func jsonArrayInJsonObj_To_arrayDic(string: String) -> Array<Dictionary<String, Any>> {
        
        /*
        // -----------------------------------------
        [jsonArrayInJsonObj_To_arrayDic 메소드 설명]
        // -----------------------------------------
        1. JsonArray + JsonObject 형태 String 데이터를 배열 + 딕셔너리 데이터로 반환 실시
        // -----------------------------------------
        2. 호출 방법 :
         // [jsonArray 형식 문자열 선언 실시]
         let jsonArrayString = "[\n" +
         "  {\n" +
         "    \"age\" : 29,\n" +
         "    \"name\" : \"TWOK\"\n" +
         "  }\n" +
         "]"
         
         
         // [유틸 파일 호출 실시]
         C_Util().jsonArrayInJsonObj_To_arrayDic(string: jsonArrayString)
        // -----------------------------------------
        3. 리턴 반환 :
         return :: [["name": TWOK, "age": 29]]
        // -----------------------------------------
        */
        
        
        // [초기 리턴 데이터 변수 선언 실시]
        var returnData : Array<Dictionary<String, Any>> = []
        
        
        // [인풋 데이터 널 체크 수행 실시]
        if string != nil
            && string.count>0
            && string != ""
            && string.trimmingCharacters(in: .whitespacesAndNewlines) != ""
            && string.trimmingCharacters(in: .whitespacesAndNewlines) != "null"
            && string.isEmpty == false {
            
            do {
                // [jsonArray - jsonObject 형식 데이터를 Array 와 Dictionary 사용해서 받음]
                returnData = try JSONSerialization.jsonObject(with: Data(string.utf8), options: []) as! Array<Dictionary<String, Any>>
            }
            catch {
                print("")
                print("====================================")
                print("[C_Util >> jsonArrayInJsonObj_To_arrayDic() :: [JsonArray + JsonObject] 형태 String 데이터를 [배열 + 딕셔너리] 데이터로 반환]")
                print("-------------------------------")
                print("catch :: \(error.localizedDescription)")
                print("====================================")
                print("")
            }
        }
        
        
        // [로그 출력 실시]
        print("")
        print("====================================")
        print("[C_Util >> jsonArrayInJsonObj_To_arrayDic() :: [JsonArray + JsonObject] 형태 String 데이터를 [배열 + 딕셔너리] 데이터로 반환]")
        print("-------------------------------")
        print("input :: \(string)")
        print("-------------------------------")
        print("return :: \(returnData.description)")
        print("====================================")
        print("")
        
        
        // [리턴 데이터 반환 실시]
        return returnData
    }
 

[결과 출력]

 

 

반응형
Comments