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파일 정보이다.
'Java' 카테고리의 다른 글
[JAVA] List, ArrayList 차이 (0) | 2023.01.04 |
---|---|
java entity -> dto 변환 stream, map, collect 사용 - 동작원리(1) (0) | 2023.01.02 |
[Java] 인코딩(Encoding)된 데이터를 디코딩(Decoding)하기 (0) | 2022.12.14 |
[Java] json 파일 읽기, 파싱 -Mac (0) | 2022.12.13 |
[Java] == 연산자, equals() 차이점 - 문자열 비교 (0) | 2022.12.12 |
댓글