Notice
Recent Posts
Recent Comments
Link
투케이2K
529. (Android/Java) [jackson 라이브러리] - JSON 데이터에서 특정 key 값 전체 변경 수행 실시 본문
Android
529. (Android/Java) [jackson 라이브러리] - JSON 데이터에서 특정 key 값 전체 변경 수행 실시
투케이2K 2023. 4. 2. 18:14[개발 환경 설정]
개발 툴 : AndroidStudio
[소스 코드]
// -------------------------------------
// [로직 처리 실시]
// -------------------------------------
try {
/**
* -------------------------------------
* TODO [요약 설명]
* -------------------------------------
* 1. Jackson : Java Object 를 JSON으로 변환하거나 JSON 을 Java Object 로 변환하는데 사용할 수 있는 Java 라이브러리입니다
* -------------------------------------
* 2. 필요 라이브러리 설치 :
*
* implementation 'com.fasterxml.jackson.core:jackson-core:2.13.4'
* implementation 'com.fasterxml.jackson.core:jackson-annotations:2.13.4'
* implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4'
* -------------------------------------
* 3. 참고 사이트 :
*
* https://github.com/FasterXML/jackson
*
* https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core
* -------------------------------------
* */
// [샘플 JSON 선언 실시]
String json = "{\n" +
" \"Name\" : \"투케이\",\n" +
" \"Age\" : 30,\n" +
" \"BookList\" : [\n" +
" {\"idx\" : 1, \"Name\" : \"JAVA\"},\n" +
" {\"idx\" : 2, \"Name\" : \"Android\"},\n" +
" {\"idx\" : 3, \"Name\" : \"Kotlin\"}\n" +
" ],\n" +
" \"Hobby\" : {\"Name\" : \"Coding\"},\n" +
" \"Address\" : {\"Addr\" : [{\"Name\":\"yeoungju\"}, {\"Name\":\"seoul\"}]}\n" +
"}";
// [특정 key 값 변수 선언]
String keyData = "Name";
String valueData = "TWOK";
// [JsonNode 선언 실시]
JsonNode jsonNode = new ObjectMapper().readTree(json);
// [원본 전체 JSON 데이터 저장]
String originString = jsonNode.toString();
// [특정 key 를 가지고 있는 path 확인]
List<JsonNode> parents = jsonNode.findParents(keyData);
// [실시간 update json 저장 값 변수 선언]
String updateString = originString;
// [for 문을 돌면서 각 path 특정 key 값 변경 실시]
for (int i=0; i<parents.size(); i++){
// [JSON 생성 실시]
try {
// [원본 해당 필드 문자열 저장]
String data = parents.get(i).toString();
//S_Log.cnt("[origin value :: "+parents.get(i).path(keyData)+"]");
// [데이터 변경 실시]
JSONObject jsonObject = new JSONObject(data);
jsonObject.put(keyData, valueData);
// [json 문자열 update 수행]
updateString = updateString.replace(data, jsonObject.toString());
// [로그 출력 실시]
S_Log.ltd("================================================");
S_Log.cnt("["+ACTIVITY_NAME+" >> "+C_Util.getNowMethod(1)+" :: FOR 문 로그 출력 실시]");
S_Log.cnt("-------------------------------------------");
S_Log.cnt("[origin data :: "+data+"]");
S_Log.cnt("-------------------------------------------");
S_Log.cnt("[change data :: "+jsonObject+"]");
S_Log.cnt("-------------------------------------------");
S_Log.cnt("[updateString :: "+updateString+"]");
S_Log.lbd("================================================");
}
catch (Exception e){
e.printStackTrace();
}
}
// [전체 로그 출력]
S_Log.ltd("================================================");
S_Log.cnt("["+ACTIVITY_NAME+" >> "+C_Util.getNowMethod(1)+" :: 전체 로그 출력 실시]");
S_Log.cnt("-------------------------------------------");
S_Log.cnt("[origin :: "+originString+"]");
S_Log.cnt("-------------------------------------------");
S_Log.cnt("[update :: "+updateString+"]");
S_Log.lbd("================================================");
}
catch (Exception e){
e.printStackTrace();
}
[결과 출력]
D///===========//: ================================================
I/: [A_Intro >> onCreate :: 전체 로그 출력 실시]
I/: -------------------------------------------
I/: [origin :: {"Name":"투케이","Age":30,"BookList":[{"idx":1,"Name":"JAVA"},{"idx":2,"Name":"Android"},{"idx":3,"Name":"Kotlin"}],"Hobby":{"Name":"Coding"},"Address":{"Addr":[{"Name":"yeoungju"},{"Name":"seoul"}]}}]
I/: -------------------------------------------
I/: [update :: {"Name":"TWOK","Age":30,"BookList":[{"idx":1,"Name":"TWOK"},{"idx":2,"Name":"TWOK"},{"idx":3,"Name":"TWOK"}],"Hobby":{"Name":"TWOK"},"Address":{"Addr":[{"Name":"TWOK"},{"Name":"TWOK"}]}}]
D///===========//: ================================================
반응형
'Android' 카테고리의 다른 글
Comments