2014-06-05 1 views
0

현재 응용 프로그램에서 JSON 구문 분석을 위해 JSON Simple 라이브러리를 사용하고 있습니다. 그 구문 분석하면 다음과 같은 오류를 던지고있다 동안이 문제로 실행 한 :이 JSON의 LONG.MAX_VALUE를 초과합니다. 간단한 구문 분석기

java.lang.NumberFormatException: For input string: "107701583138930170002"

나는이 문제가 믿는이 좁혀 숫자는 LONG 유형으로 큰하는 것입니다. 문제는이 번호를 제어 할 수 없다는 것입니다. 그렇지 않으면 문자열로 만들 것입니다. JSON Simple을 LONG 대신 BigInt로 구문 분석 할 수있는 방법이 있습니까?

답변

0

Google 코드에서 다운로드 할 수있는 json-simple 패키지는 2009 년 이래로 업데이트되지 않았습니다. github을 보면 2011 년 11 월에 Long 범위를 벗어나는 숫자에 대한 지원이 추가되었습니다.

아마도 github에서 소스를 가져 와서 최신 버전의 라이브러리를 빌드해야 할 것입니다. json-simple이 유지되지 않는 것 같습니다.

0

Json Simple의 스트리밍 파서를 사용하는 경우 비교적 간단한 문제없이 json 간단한 ContentHandler를 사용할 수 있습니다. 내 jsonj 프로젝트를 위해이 작업을 수행했습니다 : https://github.com/jillesvangurp/jsonj/blob/master/src/main/java/com/github/jsonj/tools/JsonParserNg.java 이것은 json 간단한 핸들러를 구동하기 위해 jsonsimple 대신 jackson을 사용하는 동일한 패키지의 JsonParser.java의 대안입니다.

잭슨 파서는 BigInteger를 지원합니다. 위에서 링크 된 클래스의 핵심 메소드는 switch 문에서 적절한 jsonsimple 핸들러 메소드를 호출하기 만합니다. parser.getLongValue()를 호출하면 parser.getBigIntegerValue()를 호출 할 수 있습니다.