나머지 서비스는잭슨 루트를 unwraping와 JSON을 구문 분석,하지만 @JsonRootName
<transaction><trxNumber>1243654</trxNumber><type>INVOICE</type></transaction>
또는 JSON에 응답 설정 기능없이 :
{"transaction":{"trxNumber":1243654,"type":"INVOICE"}}
을 내가 사용하는 경우에는 문제가 없습니다 :
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true)
그리고 결과 클래스
@JsonRootName("transaction")
public class Transaction {
private String trxNumber;
private String type;
//getters and setters
}
실제로 제 3 자 jar의 Transaction 클래스를 사용해야합니다. 정확히 위의 과 같지만 @JsonRootName ("transaction") 주석은 없습니다.
그래서 나는 잭슨이 트랜잭션 클래스에 구문 분석 강제로 어떤 방법이 트랜잭션 클래스 자체에 어떤 물건을 추가하지 않고 거기에
Could not read JSON: Root name 'transaction' does not match expected ('Transaction') for type...
와 끝까지 (I 이진 단지의 일부로이 파일을 얻을로) ?
사용자 정의 PropertyNamingStrategy를 시도했지만 필드 및 getter/setter 이름 만 사용하면되지만 클래스 이름은 사용하지 않는 것처럼 보입니다.
Java7, Jackson 2.0.5.
제안 사항? 감사.
좋아요! 대답을 많이 주셔서 감사합니다. 마지막으로 우리는 TransactionWrapper 객체와 함께 가서 트랜잭션 필드에 @JsonRootName ("transaction")을 넣으려고했지만 제안은 매우 흥미 롭습니다! –
'TransactionWrapper'는 좋은 소리입니다. 나는 그것에 대해서도 생각했다. 어쨌든 믹스 인 기능을 재사용하여 향후 다른 문제를 해결할 수 있습니다. –