728x90
0. 조건
: 메서드의 변수로 들어오는 자료의 타입은 Object 타입의 data라는 변수라고 가정한 경우이다
: 다른 타입으로 들어올 때, 해당 타입에 맞는 메서드를 사용하면 된다
: JsonProcessingException은 예외처리를 위해 jackson 라이브러리의 기능을 사용한 것
import com.fasterxml.jackson.core.JsonProcessingException;
: 메서드 형태 예시)
public String stringify(Object data) throws JsonProcessingException {
...
}
1. String
방법 1)
if (data instanceof String) return "\""+data"\"";
방법 2)
return String.format("\"%s\"",data);
: instanceof 타입은 변수의 타입이 해당 타입이 맞는지 boolean으로 반환해준다
: 큰따옴표(")의 경우, String으로 사용하기 위해선 구분자 \가 선행되야 한다
2. Integer
방법 1)
if (data instanceof Integer) return String.valueOf(data);
방법 2)
return data.toString();
방법 3)
return Integer.toString((Integer)data);
: Integer는 null값을 포함한다(int와 다름)
3. Boolean
if (data instanceof Boolean) return data.toString();
: true / false를 String형태로 반환만 해주면 된다. "true", "false"의 형태
4. Array
방법 1)
if (data instanceof Object[]) Object [] arr = (oBject[]) data;
// 기존 data라는 변수는 Object타입의 변수일 뿐 배열로 취급되지 않음
// 따라서 data를 배열로 타입변환해줌
for(int i=0 ; i<arr.length ; i++) arr[i] = stringify(arr[i]);
// arr안에 각 인덱스값에 맞게 대입되도록 재귀함수 돌려줌
return Arrays.toString(arr).replaceAll(" ", "");
// 완성된 배열을 반환. 이때, toString특성상 중간 공백이 생기므로,
// replaceAll(바뀔문자열, 바꿀문자열)로 편집(JSON은 공백이 없다)
방법 2)
if (data instanceof Object[]) Object [] arr = (oBject[]) data;
String str = "[";
// String에 시작할 괄호를 할당해서 생성
for(int i=0; i<arr.length ; i++) str = str+arr[i];
// 반복해서 str에 새로운 값들을 인덱스에 맞게 add해줌
return str+"]";
// 반환할 때 닫는 괄호를 붙여서 반환
5. HashMap
if (data instanceof HahsMap) {
HashMap<Object, Object> map = (HashMap<Object, Objecct>) data;
HashMap<Object, Object> result = new LinkedHashMap<>();
// 새로운 hashmap을 생성해서 data로 들어오는 값을 hashmap으로 할당
// hashmap을 할당할 linkedhashmap 객체 생성
// iteratorm entryset, keyset 등 원하는 거 사용해서 반복문 돌려주기
for(Map.Entry<Object, Object> entry : map.entrySet()) {
string key = stringify(entry.getKey());
string value = stringify(entry.getValue());
result.put(key, value);
}
return result.toString().replace.All(" ", "").replaceAll("=",":")
}
728x90
'Java & Spring > 옵션정리' 카테고리의 다른 글
[JAVA] 기본학습 - 메서드 선언 및 사용 예시 (0) | 2022.07.28 |
---|---|
[JAVA] 문자열 내 단어들 첫 글자 대문자 변환 (0) | 2022.07.26 |
[백엔드] java기초 - 변수/상수/타입/리터럴 (0) | 2022.07.20 |
[JAVA] Scanner 적용하기 (0) | 2022.07.11 |
[백엔드] 리눅스(Linux) 기초 5 - 명령어 옵션 (0) | 2022.06.30 |