我有以下设置:
public interface I{ public String getIprop();}
class A implements I{ public String a = "a"; public String getIprop(){return "i";}
class B implements I{ public String b = "b"; public String getIprop(){return "i";}
List<I> myObjects = new List<I>();
如何在Jackson中根据json中指定的类类型实现从json到Java对象的转换。
示例Java类型:
public class Car{
public String make;
public String model;
}
public class Spoon {
public String material;
}
public class Ownership {
public List<Object> items;
public User owner;
}
例Json:
{
"items": [
我正在尝试使用jackson 2.6.3将一个对象序列化为json,我想在序列化的json中包含类型信息。这不适用于嵌套在此类中的成员。
这是测试代码。
public class Test {
@JsonSubTypes({ @JsonSubTypes.Type(value = ConcreteA.class)})
interface A {
}
@JsonTypeInfo( use=JsonTypeInfo.Id.CLASS)
class ConcreteA implements A {
}
@JsonSubTypes({ @JsonSubTypes.Type(value = Con
我们通过xcj从模式中使用生成的对象类型。因此,对类型定义的控制不太灵活。我们还使用JAXB注释。
然后,我们使用Jackson更快的XML对这些对象进行反序列化。不幸的是,当我们反序列化抽象类时,我们得到了一个异常:
com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of
com.x.y.z.AnstractType: abstract types either need to be mapped to concrete types,
have custom deserializ
正如答案所示,当我序列化和反序列化容器时,我得到了这个异常:
Caused by: org.codehaus.jackson.map.JsonMappingException: Can not find a Value deserializer for abstract type [simple type, class com.xiaonei.wap.ps.model.Container]
at org.codehaus.jackson.map.deser.StdDeserializerProvider._handleUnknownValueDeserializer(StdDeserializ
我正在尝试做一个简单的示例,将json反序列化为多态类。反序列化失败,错误如下:
org.codehaus.jackson.map.JsonMappingException: Could not resolve type id 'aField' into a subtype of [simple type, class ...SubClassA]
如果我尝试对单个子类进行反序列化,只对该类使用JSON,它就成功了,但是当我将两个类放在SubClassTestObject中时,它就失败了。有什么解决办法吗?是否需要编写自定义反序列化程序?
这是我的JSON:
{
"
我目前正在使用EclipseLink、spring-data-jpa和spring-data-rest来尝试一个场景,其中我有带有继承的Embeddable类。
这个场景非常简单:Parent包含一个可以是PercentageValue或AbsoluteValue的值。
映射:Parent保存一个可嵌入的值:
@Entity
public class Parent {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Embedded
private Value
我有一个如下的基类:
public class Criteria {
private CriteriaType type;
//getters & setters
public enum CriteriaType {
Condition, Medication
}
}
和派生类
public class ConditionCriteria extends Criteria {
private String a;
//getters & setters
}
public class Medi
假设我有一个基类A
public class A {
public String a;
}
和两个子类B和C
public class B extends A {
public String b;
}
public class C extends A {
public String c;
}
以及A类的包装器:
public class Wrapper {
public A a;
}
我还有Rest控制器,它接收客户端请求作为包装对象:
@RestController
public class SomeController {
public void
我有一个模型,其中的字段注释为:
@JsonTypeInfo(use = CLASS)
private Object dudClass;
主要的问题是,当我试图反序列化这个对象时,在类路径上没有这个dudClass实例,我会收到一个异常:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Invalid type id 'pl.erbel.DudClass' (for id type 'Id.class'): no such class found.
有什么简单的方法可以忽略这个异常吗
我正在使用下拉向导来创建REST。但我不明白,我如何配置Jackson,使其将某些类排除在VALUE_ROOT_VALUE/UNWRAP_ROOT_VALUE特性之外?现在,我收到了一个不包含根元素名称的带有json的post请求:
{
"identification": "dummyuser",
"password":"dummypass"
}
这应该映射到java类LoginRequest:
public class LoginRequest {
public String identidication;
我在用
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY,
property="_class")
class Base { }
class Derived1 extends Base { ... }
class Derived2 extends Base { ... }
...
若要序列化和反序列化多态基类,请执行以下操作。这很好,但是我不得不在我的JSON文档中的任何地方都包含_class属性,即使在编译时知道实际类型的地方也是如此。我有很多派生类(其
enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL)的替代方案是在RedisConfig中不推荐的
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
ObjectMapper om = new ObjectMapper();
om.setVisibility(P