json-lib

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


JSON keys must be strings. 

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


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

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


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

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


 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을 사용하지 못하게 강제 했는지 확인 작업을 하였지만 그런 내용이 없어서 위에 에러발생 시키는 코드를 삭제 배포해서 해결했다.

참조