티스토리 뷰

프로그래밍

JSONObject 버그?

ReturnToHome 2017. 1. 10. 22:58


JAVA 에서 JSONObject 를 사용 시에 아래와 같은 버그를 발견하였습니다.

처음에 버그인지 몰랐을 때는 계속 이상한 값이 나오길래 내가 뭔가 잘못한 줄 알고 계속 디버깅 하면서 뭐지뭐지 하다가 결국 테스트 케이스를 한번 돌리고 나서야 버그라는 것을 깨닫게 되었네요. 아 살다 살다 이런 버그를 보게 되다니 어처구니가 없을 따름입니다. 이런 버그를 발견 시 해당 CLASS 를 까보고 원인을 파악하고 하시는 분들도 있다던데 그건 언젠가 시간나면 해보기로 하고 일단 어떤 버그, 어떤 상황인지에 대해 먼저 적어보려 합니다.


일단 언어는 위에 명시한대로 JAVA 이며 JSONObject 테스트를 위해서는 아래 의존 라이브러리들이 필요합니다.


// json 라이브러리

다운 : http://sourceforge.net/projects/json-lib/files/json-lib/


// 의존 라이브러리

jakarta commons-lang 2.5

jakarta commons-beanutils 1.8.0

jakarta commons-collections 3.2.1

jakarta commons-logging 1.1.1

ezmorph 1.0.6


// 그 문제의 해당 소스 입니다.

import net.sf.json.JSONObject;


public class TestJSONClass {

public static void main(String[] args) throws Exception {

String errorMessageA = "[11~3월 EARLY BIRD]스탠다드 산 트윈[더블+싱글]";

String errorMessageB = "[3월 EARLY BIRD]스탠다드 산 트윈[더블+싱글]";

String succeedMessageA = "[11~3월 EARLY BIRD]스탠다드 산 트윈";

String succeedMessageB = "[월 EARLY BIRD]스탠다드 산 트윈[더블+싱글]";

JSONObject json = new JSONObject();

json.put("errorMessageA", errorMessageA);

json.put("errorMessageB", errorMessageB);

json.put("succeedMessageA", succeedMessageA);

json.put("succeedMessageB", succeedMessageB);

System.out.println("errorMessageA ? " + json.get("errorMessageA"));

System.out.println("errorMessageB ? " + json.get("errorMessageB"));

System.out.println("succeedMessageA ? " + json.get("succeedMessageA"));

System.out.println("succeedMessageB ? " + json.get("succeedMessageB"));

}

}



결과 :


errorMessageA ? ["11~3월 EARLY BIRD"]

errorMessageB ? ["3월 EARLY BIRD"]

succeedMessageA ? [11~3월 EARLY BIRD]스탠다드 산 트윈

succeedMessageB ? [월 EARLY BIRD]스탠다드 산 트윈[더블+싱글]



자 뭔가 좀 이상하죠? errorMessage 의 경우 문장이 완벽하게 노출되지 않고 잘려서 노출되고 있습니다.


왜 그런지 조건과 원인을 한참 찾았습니다. 그래서 그나마 제가 찾은 원인은 이러했습니다.


조건 1. 대괄호 [] 로 시작

조건 2. 문장에 대괄호 [] 가 최소 2개 이상 있을 시

조건 3. 첫 대괄호 [] 안의 시작이 숫자일 시


사실 이 이유가 아닐 수도 있지만 일단 제 상황에서 발생하는 원인에 대한 건 이러했습니다.


이상한 거에 시간 빼앗겼습니다. 혹시 이러한 버그 발생하시는 분들은 다른 json 라이브러리를 사용하시거나 map 등으로

해결해야 하시는게 혈압유지에 도움이 되지 않을까 싶습니다.





댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함