FastJson 성형 데이터의 반서열화 구덩이

1287 단어
개발 과정에서 json 데이터가 반서열화된 구덩이를 만났는데 구체적인 코드는 다음과 같다.
1 String viewValue = "..............."; #   json   
2 JSONObject viewObject = JSONObject.parseObject(viewValue);
3 JSONObject videoObject = (JSONObject) viewObject.get("video");
4 Integer viewCount = new Integer(0);
5 if(videoObject.get("viewCount") != null) {
6    viewCount = (Integer) videoObject.get("viewCount"); #       
7 }

이곳의 구덩이는 6행 코드에 나타난다. 내 목표는viewCount의 키에 대응하는 성형값을 얻는 것이다. 몇 번의 테스트를 거쳐도 아무런 이상이 발견되지 않았다.근데 테스트에 제출됐을 때 테스트 동창한테 이상이 생겼어요.그렇다면 구체적인 원인은 무엇일까?직설적으로fastjson은 성형된value값을 반서열화할 때 구체적인 길이에 따라 서로 다른 유형을 생성하고 값이 Integer형의 표현범위를 초과하면 반서열화Long으로 변한다.Integer 내에서 Integer로 반사됩니다.내가 테스트한 값은 모두 온라인에서 가능한 데이터 범위에 따라 테스트한 것이고 테스트 학생들은 가장자리 상황을 더 많이 덮어쓰기 때문에 롱을 반서열화했지만 롱은 인터내셔널로 강제로 전환할 수 없다.
그럼 어떻게 처리해야 하나요?Long으로 다시 이동하려면 문자열이 필요하며 코드는 다음과 같습니다.
if(videoObject.get("viewCount") != null) {
    viewCount = Long.valueOf(String.valueOf(videoObject.get("viewCount")));
 }

설명해야 할 것은, 나는 비교적 새로운 버전에 속한다.
       
			com.alibaba
			fastjson
			1.2.47
		

참조:https://www.jianshu.com/p/108b57bac10e

좋은 웹페이지 즐겨찾기