본문 바로가기
반응형
Java

json을 flat(parameter-delimiter)파일로 변환하기(json 파싱)

by brightGarden02 2022. 12. 16.

<a href="https://www.flaticon.com/kr/free-icons/json" title="json 아이콘">Json 아이콘 제작자: Smashicons - Flaticon</a>

 

 

json을 flat파일로  변환하기 위해서

json을 map을 통해 파싱해야한다.

 

json flatter library를 추가한다.

https://mvnrepository.com/artifact/com.github.wnameless/json-flattener/0.1.0

// https://mvnrepository.com/artifact/com.github.wnameless/json-flattener
implementation group: 'com.github.wnameless', name: 'json-flattener', version: '0.1.0'

 

 

 

decodedJson.json 파일 정보이다. 이 json파일을 flat파일로 변환할 것이다.

{
"data": [
{
"Names": "Benjamin Lee",
"Phone": "010 1111 1111",
"Email": "benjaminLee@gmail.com",
"BirthDate": "1993/02/23"
},
{
"Names": "Jake Kim",
"Phone": "010 2222 2222",
"Email": "JakeKim@gmail.com",
"BirthDate": "1995/05/17"
}
]
}

 

 

 

decodedJson.json 파일을 map으로 파싱하는 코드이다.

File jsonFile = new File("./decodedJson.json");

ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(jsonFile);
Map<String, JsonNode> map = new JsonFlattener(root).flatten();

 

 

 

flat 파일로 저장하는 코드이다.

//flat 파일로 저장
StringBuilder sb = new StringBuilder();
try {
   file = new FileWriter("/Users/won/Downloads/flatFileName.txt");

   map.forEach(
         (k, v) -> {
            if(k.contains("BirthDate")) {
               sb.append(v).append("\n");
            }
            else {
               sb.append(v).append("^");
            }
         });

   file.write(sb.toString());

} catch (IOException e) {
   e.printStackTrace();
} finally {
   try {
      file.flush();
      file.close();
   } catch (IOException e) {
      e.printStackTrace();
   }
}

 

 

 

위 코드에 대한 부가설명

 

원하는 파일 이름을 적는다. 필자는 flatFileName로 적었다.

file = new FileWriter("/Users/won/Downloads/flatFileName.txt");

 

 

 

Key에 특정한 단어(BirthDate)가 들어있다면 그 값(value)에 대해서 한줄 넘어가도록 구현하였다 ->  sb.append(v).append("\n")

각 값(value)에 따라 구분하기 위해 delimeter로 "^"을 넣었다. -> sb.append(v).append("^")

map.forEach(
      (k, v) -> {
         if(k.contains("BirthDate")) {
            sb.append(v).append("\n");
         }
         else {
            sb.append(v).append("^");
         }
      });

 

 

 

변환된 flat파일 정보이다.

 

 

 

 

 

댓글


반응형
반응형