JavaScript Object Notation
데이터 교환을 위해 만들어진 객체 형태의 포맷
네트워크를 통해, 어떤 객체 내용을 다른 프로그램에게 전송하기 위한 조건
객체를 JSON의 형태로 변환
jackson
라이브러리에서 제공하는 ObjectMapper클래스를 사용하여 JSON형태로 변경
JSON으로 변환된 객체의 타입은 문자열이다.
Json의 키와 문자열값은 반드시 “”
쌍따옴표로 감싸야한다.
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(message); //직렬화(serialize)
System.out.println(json)
/*
{"createdAt":"2021-01-12,10:10:10","receiver":"박해커","sender":"김코딩","message":"밥먹을래?"}
*/
// readValue메서드를 통해 문자열을 다시 객체형태로 변환
Map<String, String> deserializedData = mapper.readValue(json, Map.class);
System.out.println(deserializedData); //역직렬화(deserialize)
import java.util.*;
import java.util.stream.Stream;
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 String.format("\"%s\"",data);
}
//입력된 값이 Integer일 경우
if(data instanceof Integer){
return String.valueOf((int)data);
}
//입력된 값이 Boolean일 경우
if(data instanceof Boolean){
if(data.equals(true))
return "true";
else if(data.equals(false))
return "false";
}
//입력된 값이 Object[]일 경우
if(data instanceof Object[]){
Object[] arr = (Object[])data;
String[] str = new String[arr.length];
for(int i = 0; i < str.length; i++)
str[i] = stringify(arr[i]);
return Arrays.toString(str).replace(" ", "");
}
//입력된 값이 HashMap일 경우
if(data instanceof HashMap){
HashMap hashMap = (HashMap) data;
Set<String> keySet = hashMap.keySet();
StringBuilder mapAsString = new StringBuilder("{");
Iterator<String> keyIterator = keySet.iterator();
if(keySet.size() == 0) return "{}";
while(keyIterator.hasNext()){
String key = keyIterator.next();
Object value = hashMap.get(key);
mapAsString.append(stringify(key) + ":" + stringify(value) + ", ");
}
mapAsString.delete(mapAsString.length()-2, mapAsString.length()).append("}");
return mapAsString.toString().replace(" ","" );
}
//지정되지 않은 타입의 경우에는 "null"을 리턴합니다.
return "null";
}
}
StringBuilder
사용public class Main
{
public static void main(String[] args)
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("문자열 ").append("연결");
// String str = stringBuilder; // String에 StringBuilder를 그대로 넣을 순 없다. toString()을 붙여야 한다
String str = stringBuilder.toString();
}
}
public static void main(String[] args) {
StringBuilder a = new StringBuilder("Hello");
a.append(" World");
System.out.println(a); // "Hello World"
}