1
我引用一個返回格式的數組的網絡服務索引數組:如果XML
格式要求如何反序列化使用傑克遜
{
"ZooAnimals": {
"@size": "2",
"Animal": {
"0": {
"@name": "elephant",
"@size": "huge"
},
"1": {
"@name": "termite",
"@size": "verysmall"
}
}
}
}
返回:
<ZooAnimals size="2">
<Animal name="elephant" size="huge"></Animal>
<Animal name="termite" size="very small"></Animal>
</ZooAnimals>
我正在編寫一個測試來驗證它是否正確地被反序列化爲一個Java
類。 XML
工作正常,但JSON
(使用傑克遜)給出了一個錯誤:無法識別的字段「0」未標記爲可忽略。
我不控制JSON響應,寧願使用單個類來接收反序列化的內容。我繼承的類被註釋是這樣的:
@XmlAccessorType(XmlAccessType.FIELD)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@JsonTypeName("ZooAnimals")
public class ZooAnimals {
@XmlAttribute
@JsonProperty("@size")
private String size;
@XmlElement(name = "Animal", required = false)
@JsonProperty("Animal")
private List<Animal> animalList;
...
}
@XmlAccessorType(XmlAccessType.FIELD)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@JsonTypeName("Animal")
public class Animal {
@XmlAttribute
@JsonProperty("@name")
private String name;
@XmlAttribute
@JsonProperty("@size")
private String size;
...
}
有沒有辦法來註釋這個類讓傑克遜可以反序列化上面的文字沒有我編寫自定義代碼?順便說一句,維持訂購不是必需的。
我對此表示懷疑。 Web服務沒有返回一個json數組(參見例如http://www.w3schools.com/json/json_syntax.asp),因此您可能必須編寫一些自定義序列化來將其列入列表。 – Taylor 2014-09-06 01:49:41