json-lib

json-lib

팀원이 json-lib를 써서 json 문자열을 JSONObject로 변환하는 부분이 있었다.
하지만 하나의 특정 url에서 아래처럼 에러코드가 나기 시작했다.

1
2
3

JSON keys must be strings.

그래서 json-lib를 보기 시작했는데 key값이 String 타입인줄 체크하고 있었다
api에서 보니 JsonConfig 객체의 AllowNonStringKeys 변수값을 수정하면 위에 에러를 피할수 있어서
아래 처럼 회피를 했다.

1
2
3
4
5

JsonConfig config = new JsonConfig();
config.setAllowNonStringKeys(true);
JSONObject json = JsonMapper.fromObject("{"123123":"xxxxx"}",config);

하지만 위처럼 수정을해도 다른 에러가 나기 시작했다.

1
2
3

JSON keys must not be null nor the 'null' string.

해당 에러을 회피할수가 없어서 소스를 확인했더니 무조건 키에 null이라는 값이 들어오면 에러를 발생시키게 만들었다.
JSONObject 에 930 line

1
2
3
4
5
6

String key = String.valueOf( k );
if( "null".equals( key )){
throw new NullPointerException("JSON keys must not be null nor the 'null' string.");
}

그러면 json 표준에 키값이 null이라는 string을 사용하지 못하게 강제 했는지 확인 작업을 하였지만
그런 내용이 없어서 위에 에러발생 시키는 코드를 삭제 배포해서 해결했다.

참조