3 回答

TA貢獻1784條經(jīng)驗 獲得超2個贊
如果使用fasterxml,
可能需要這些更改
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.node.ObjectNode;
在主要方法中
采用
SimpleModule module =
new SimpleModule("PolymorphicAnimalDeserializerModule");
代替
new SimpleModule("PolymorphicAnimalDeserializerModule",
new Version(1, 0, 0, null));
在Animal deserialize()函數(shù)中,進行以下更改
//Iterator<Entry<String, JsonNode>> elementsIterator = root.getFields();
Iterator<Entry<String, JsonNode>> elementsIterator = root.fields();
//return mapper.readValue(root, animalClass);
return mapper.convertValue(root, animalClass);
這適用于fasterxml.jackson。如果它仍然抱怨類字段。字段名稱使用與json中相同的格式(帶有“ _”-下劃線)。因為這
//mapper.setPropertyNamingStrategy(new CamelCaseNamingStrategy()); 可能不受支持。
abstract class Animal
{
public String name;
}
class Dog extends Animal
{
public String breed;
public String leash_color;
}
class Cat extends Animal
{
public String favorite_toy;
}
class Bird extends Animal
{
public String wing_span;
public String preferred_food;
}
- 3 回答
- 0 關注
- 464 瀏覽
添加回答
舉報