반응형
😊review
Jackson
Java Object를 Json으로 변환(직렬화,serializing) 하거나, JSon을 Java Object로 변환(역직렬화, deserializing)하는데 사용할수있는 Java 라이브러리. Jackson과 함께 GSon이라는 라이브러리또한 많이쓰이고 이외에도 엄청많다..!
JSon (JavaScript Object Notation)
name - value 형태의 경량데이터 교환형식이다. 기존에 사용되던 XML보다 인간이 읽고쓰기에 용이한 형태로 작성된다.
//JSon 형식
{
"name": "duckgeun",
"age": 29,
"address": {
"street": "exmaple",
"city": "korea",
"state": "dj"
},
"phoneNumbers": [
{
"type": "home",
"number": "555-555-1234"
},
{
"type": "work",
"number": "555-555-5678"
}
]
}
stringifyJSon 구현 코드
Object를 받아 Json으로 작성가능한 클래스를 구현해보았다.
public class stringifyJSON {
public String ObjectMapper(Object data) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(data);
}
public String stringify(Object data) {
//입력된 값이 문자열일 경우
if(data instanceof String){
return "\""+data+"\""; //String 일경우 "문자열" 출력
//String.format("\""%s"\"",data); == > 요것도 가능
}
//입력된 값이 Integer일 경우
if(data instanceof Integer){
return Integer.toString((Integer)data);
}
//입력된 값이 Boolean일 경우
if(data instanceof Boolean){
return String.valueOf(data);
}
//입력된 값이 Object[]일 경우
if(data instanceof Object[]){
String result = "["; //결과값에 [ 를 넣는다.
for(Object element : (Object[]) data){ //data를 돌면서 result에 element를 stingify함수를 재귀돌려서 넣어주고 , 를 추가
result += stringify(element) +",";
}
if(result.endsWith(",")) result = result.substring(0, result.length() -1); //마지막에 ,를 빼준다.
return result+"]"; //출력 + ];
}
//입력된 값이 HashMap일 경우
if(data instanceof HashMap){
HashMap<Object, Object> map = new HashMap<>();
String result = "{";
for(Map.Entry<?, ?> entry : ((HashMap<?, ?>) data).entrySet()){ //엔트리로 처리한다. <?> => 타입변수에 모든타입사용가능
result = result + stringify(entry.getKey()) + ":" + stringify(entry.getValue()) +","; //키랑 벨류를 stringify함수 돌려준다.
}
if(result.endsWith(",")) result = result.substring(0, result.length() -1); //마지막에 , 제거
return result +"}";
}
//지정되지 않은 타입의 경우에는 "null"을 리턴합니다.
return "null";
}
}
반응형