webservice는 NULL 대신 빈 문자열을 반환하므로 Jackson이 충돌합니다. 그래서 사용자 정의 파서를 만들었고 수동으로 구문 분석하려고합니다. 어떤 생각 어떻게 이걸 얻을 수 있니?RestTemplate & Jackson - 사용자 정의 JSON 비 직렬화?
무엇이 잘못 되었나요? 내가하려는 것은 JSON을 구문 분석하여 내가 일반적으로하는 것처럼 처리하는 것이다. 필드 이름은 @JsonProperty를 사용하여 내 속성에 추가되므로 파서는이를 변환하는 방법을 알아야합니다. 여기
public class InsertReplyDeserializer extends JsonDeserializer<ListingReply> {
@Override
public ListingReply deserialize(JsonParser jsonParser, DeserializationContext arg1)
throws IOException, JsonProcessingException {
ObjectCodec oc = jsonParser.getCodec();
JsonNode node = oc.readTree(jsonParser);
// If service returns "" instead of null return a NULL object and don't try to parse
if (node.getValueAsText() == "")
return null;
ObjectMapper objectMapper = new ObjectMapper();
ListingReply listingReply = objectMapper.readValue(node, ListingReply.class);
return listingReply;
}
}
, 이것은 나쁜 데이터를 파싱 충돌 서버에서 제공되는 특별한 경우이다 파서 객체 구조를 기대하고 있기 때문에 응답은 빈 문자열 (결과의 특정 필드에 대한)입니다. 그래서 이것은 내 애플 리케이션에있는 모델 중 단 하나 deserializing에 대한 해결 방법입니다. 나머지 애플 리케이션에서는 JSON을 deserialize 할 필요가 없습니다. RestTemplate & Jackson (@JsonProperty 주석 사용하기)에 의해 자동화되었습니다. – aryaxt
정확히, 그래서 위의 내 솔루션은 수동으로 deserialization 제거 빈 응답 문자열을 돌볼 것입니다이 특수 변환기를 나머지 템플릿을 추가 할 제안합니다. 이 같은 – nilesh
Ooooh와 같은 상황을 정확히 처리하기 위해 변환기가 제공되므로 단일 클래스 직렬화 해제시 오류를 처리하는 대신 MessageConverter로 옮겨 모든 것을 적용합니다. 나는 그것을 시도하고 다시 게시 할 것입니다 – aryaxt