Java
json을 flat(parameter-delimiter)파일로 변환하기(json 파싱)
brightGarden02
2022. 12. 16. 23:27
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파일 정보이다.