com.google.gson.stream.MalformedJson Expected literal value at line 1 column 28

1892 단어 정리 하 다.
오늘 json 문자열 을 사용 하여 대상 을 바 꿀 때 오류 가 발생 했 습 니 다.그래서 정 리 를 해 보도 록 하 겠 습 니 다.
Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected literal value at line 1 column 28
이 오 류 는 json 문자열 에 문제 가 있 습 니 다.
나 는 이런 문자열 을 가지 고 있다.
String httpResponse="{\"code\":\"0\",\"success\":true,\"data\":{\"IsSuccess\":1,\"FailReason\":\"\",\"RefundOrderId\":\"161017132456273328\",\"ErrorCode\":\"\"},\"message\":\"\",\"requestid\":\"8ef58d60-7d72-46ec-b16a-3692b30d4a5c\"}";
Refund response=new Gson().fromJson(httpResponse, Refund.class);
BaseResponse baseResponse=new BaseResponse();
baseResponse.setCode(response.getCode());
baseResponse.setMessage(response.getMessage());
baseResponse.setSuccess(response.isSuccess());
baseResponse.setData(response.getData().toString());//  baseResponse.setData(new Gson().toJson(response.getData()));

사실 여기 있 는 json 문자열 은{IsSuccess=1.0,FailReason=,RefundOrderId=161017132456273328,ErrorCode=}이렇게 되 었 습 니 다.
RefundApplyResponse res1=new Gson().fromJson(baseResponse.getData(),RefundApplyResponse.class);

우리 쪽 코드 는 모두 BaseResponse 로 먼저 변환 한 다음 에 대응 하 는 대상 으로 전환 해 야 하기 때문에 저 는 코드 를 간단하게 복 사 했 습 니 다.아직 안 붙 인 게 많아 요.
이 코드 를 실행 하면잘못 을 보고 하 다
그래서 위의 Data 의 json 문자열 로 대상 을 바 꾸 면 틀림없이 잘못 보고 할 것 이다.
그럼 어떻게 해결 해 야 되 지?데이터 에 빈 데 이 터 를 어떻게 사용 합 니까?""따옴표 가 자동 으로 제거 되 지 않 습 니 다."
그래서 잘못된 JSon 문자열 을 만 들 려 면 다음 과 같이 수정 하 십시오:
baseResponse.setData(new Gson().toJson(response.getData()));

인쇄 된 json 문자열 은{"IsSuccess":1.0,"FailReason":","RefundOrderId":"161017132456273328","ErrorCode":"}입 니 다.
이렇게 하면 돼 요.

좋은 웹페이지 즐겨찾기