클래스 임포트가 안 될 때
그래듈 핸들링해서 버전 맞추는 것이 중요
메인 클래스가 임포트 되지 않아서 페어분이 알려주신 대로
import com.fasterxml.jackson.core.JsonProcessingException;
이 코드를 붙여넣으니 실행이 잘 됐다!
public class stringifyJSON {
public String ObjectMapper(Object data) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(data);
}
public String stringify(Object data) { // Object -> String
if (data instanceof String) { // 입력된 값이 문자열일 경우
return "\"" + (String) data + "\""; // 또는 return String.format("\%s\"", data);
} else if (data instanceof Integer) { // 입력된 값이 Integer일 경우
return Integer.toString((Integer) data); // int 를 인식 못하니까 스트링으로 (Object->Interger->String)
// 또는 return data.toString();
} else if (data instanceof Boolean) { // 입력된 값이 Boolean일 경우
if ((Boolean) data) return "true"; // 또는 return String.valueOf(data);
return "false";
} else if (data instanceof Object[]) { // 입력된 값이 Object[]일 경우
Object[] array = (Object[]) data;
if (array.length == 0) return "[]"; // 배열이니까 []가 필요
String ans = "[";
for (int i = 0; i < array.length - 1; i++) {
ans += stringify(array[i]) + ","; // 마지막이 아닐 때 ,를 추가해준다
}
return ans + stringify(array[array.length - 1]) + "]";
// 마지막일땐 문 닫고 나온다
/* 또는
for(int i = 0; i<arr.length; i++) {
arr[i] = stringify(arr[i]);
}
return Array.toString(arr).replaceAll(" ", "");
*/
} else if (data instanceof HashMap) { // 입력된 값이 HashMap일 경우
HashMap<Object, Object> map = (HashMap) data; // 이걸 재귀로 돌린다
if (map.isEmpty()) return "{}";
String ans = "{";
int cnt = 0;
Iterator<Object> keys = map.keySet().iterator(); // for문 사용도 가능
while (keys.hasNext()) {
cnt++; // 값을 세준다
Object key = keys.next();
Object value = map.get(key); // getkey로 value값 가져오기
ans += stringify(key) + ":" + stringify(value); // String
if (cnt != map.size()) ans += ","; // 마지막이 아닐 때 ,를 추가해준다
}
return ans + "}"; // 마지막일 땐 문 닫고 나온다
/* 또는
HashMap<Object, Object> map = (HashMap<Object, Object>) data;
HashMan<Object, Object> result = new LinkedHashMap<>();
for(Map.Entry<Object, Object> entry : map.entrySet()) { // 향상된 for문
String key = stringify(entry.getkey());
String value = stringfify(entry.getvalue());
result.put(key, value);
}
return result.toString().replaceAll(" ", "").replaceAll("=", ":");
*/
}
return "null"; // 지정되지 않은 타입의 경우에는 "null"을 리턴
}
}