我有一個POJO類,如:JAXB序列化JsonElement場POJO
class Cat {
public Cat() {}
private String name;
private JsonElement arbitraryProperties;
}
我使用傑克遜(JAXB)和cat
是一個資源我要導入和導出。
GET /cats/{id}
POST /cats
導出工作正常。導入不起作用,因爲JsonElement
是抽象的。所以我將@JsonDeserialize(使用= MyJsonElementDeserialize.class)註釋添加到arbitraryProperties field
。
的MyJsonElementDeserialize
類的樣子:
public class JsonElementDeserialize extends JsonDeserializer<JsonElement> {
public JsonElementDeserialize() {
}
@Override
public JsonElement deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
return new JsonObject(); // here I need to create my object later
}
}
當我現在請與有效載荷POST /貓:
{
"name": "Mia",
"arbitraryProperties": {
"a": 3,
"b": [],
"c": {
"d": "race"
}
}
}
傑克遜返回錯誤代碼400:
無法識別的字段「a」 (Cat類),未標記爲可忽略的(1個已知屬性:「name」])。
我的錯誤在哪裏?我如何在我的POJO中有一個JsonElement
自動序列化和反序列化?
什麼是JsonElement?它是GSON的一部分嗎?所以爲什麼不使用它? –
是JsonElement是來自GSON的抽象類。 https://google.github.io/gson/apidocs/com/google/gson/JsonElement.html – user1482309
一個小的建議:標題說「序列化」,但問題是關於「反序列化」。改變標題會更有意義,更容易以這種方式找到相關問題。 – StaxMan