我没有足够的理由通过注释来configurationspring beans,而不是纯xml bean,现在我正面临着后果。 我使用configurationREST通道 <mvc:annotation-driven /> 现在我只需MappingJacksonHttpMessageConverterconfiguration为MappingJacksonHttpMessageConverter输出具有非空值的字段。 我已经尝试了以下内容: <bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="prefixJson" value="false" /> <property name="supportedMediaTypes" value="application/json" /> <property name="objectMapper"> <bean class="org.codehaus.jackson.map.ObjectMapper"> <property name="serializationInclusion" value="NON_NULL"/> </bean> </property> </bean> bean被创build,但另一个转换器实例被创build并在通道中使用。 所以我已经尝试了在这个Stackoverflow问题中描述的@Configuration和@Bean的方式,但仍然json序列化使用它自己的configuration。 最后我试图通过注入映射器 @Autowired private MappingJacksonHttpMessageConverter jacksonConverter; 但是我已经结束了NoSuchBeanDefinitionException 。 所以现在我没有select,所以我在这里要求任何想法。 如何控制和configuration框架使用的映射器?
我正在尝试在Spring中编写一个自定义的JSON解串器。 我想为大部分字段使用默认的序列化器,并为less数属性使用自定义的反序列化器。 可能吗? 我正在尝试这种方式,因为属性的大部分都是值,所以对于这些我可以让jackson使用默认的反序列化器; 但很less有属性是引用,所以在自定义反序列化器中,我必须查询数据库的引用名称并从数据库中获取引用值。 如果需要,我会显示一些代码。
我有一个String与下面的值: [{"key1":"value11", "key2":"value12"},{"key1":"value21", "key2":"value22"}] 和以下class级: public class SomeClass { private String key1; private String key2; /* … getters and setters omitted …*/ } 我想parsing它到一个List<SomeClass>或SomeClass[] 使用Jackson ObjectMapper的最简单的方法是什么?
我正在为我的应用程序开发一个REST接口,使用Jackson将我的POJO域对象序列化为JSON表示。 我想为某些types定制序列化,以便为POJO中不存在的JSON表示添加附加属性(例如,添加一些元数据,引用数据等)。 我知道如何编写我自己的JsonSerializer ,但在这种情况下,我需要显式调用JsonGenerator.writeXXX(..)方法为我的对象的每个属性,而我所需要的只是添加一个额外的属性。 换句话说,我希望能够写下如下内容: @Override public void serialize(TaxonomyNode value, JsonGenerator jgen, SerializerProvider provider) { jgen.writeStartObject(); jgen.writeAllFields(value); // <– The method I'd like to have jgen.writeObjectField("my_extra_field", "some data"); jgen.writeEndObject(); } 或者(甚至更好)以某种方式拦截jgen.writeEndObject()调用之前的序列化,例如: @Override void beforeEndObject(….) { jgen.writeObjectField("my_extra_field", "some data"); } 我想我可以扩展BeanSerializer并覆盖它的serialize(..)方法,但它被宣布是final ,我也找不到一个简单的方法来创build一个BeanSerializer的新实例,而不提供所有的types元数据细节实际上重复一个很好的部分jackson。 所以我放弃了这样做。 我的问题是 – 如何自定义Jackson的序列化,为特定的POJO添加额外的东西到JSON输出中,而不会引入太多的样板代码,并尽可能重复使用默认的Jackson行为。
我和jackson有一个问题,我觉得应该很简单,但是这样会让我失望。 比方说,我有一个Java POJO类,看起来像这样(假设我为Getters和Setters): class User { private String name; private Integer age; } 我想反序列化看起来像这样的JSON到一个用户对象: { "user": { "name":"Sam Smith", "age":1 } } jackson给我的问题,因为用户不是在JSON的第一级对象。 我显然可以做一个UserWrapper类有一个单一的用户对象,然后反序列化,但我知道必须有一个更优雅的解决scheme。 我应该怎么做?
我正在使用jackson将我的对象转换为json。 该对象有2个字段: @Entity public class City { @id Long id; String name; public String getName() { return name; } public void setName(String name){ this.name = name; } public Long getId() { return id; } public void setName(Long id){ this.id = id; } } 因为我想要使用jQuery自动完成function,所以我希望'id'在json和'name'中显示为'value',显示为'label'。 jackson的文档不清楚,我已经尝试了每个注释,即使是远程似乎它做我所需要的,但我不能让name显示为label和id显示为value的JSON。 有谁知道如何做到这一点,如果这是可能的?
我有两个实体: Parent { Child[] children; } and Child { Parent parent; } 我知道@JsonBackReference和@JsonManagedReference 。 它们是好的,如果我正在序列化Parent实例。 但是我也需要传输Child实例,我希望填充parent字段。 换一种说法: 在Parent序列化中,它应该有children但是他们的父领域可能是空的(可以通过使用json引用注释来解决)。 在Child序列化中, parent应该有children (但是children不必有parent 。 有没有办法使用标准的jacksonfunction解决它? 即跳过已序列化的实体的序列化,而不是标记符合或不符合序列化条件的字段。
我有一个密码字段的实体类: class User { private String password; //setter, getter.. } 我想在序列化过程中跳过这个字段。 但它应该仍然能够反序列化。 这是必需的,这样客户端可以给我一个新的密码,但不能读取当前的密码。 jackson怎么做到这一点?
试图获取JSON请求并处理它时,出现以下错误: org.codehaus.jackson.map.JsonMappingException:找不到types为[简单types,类com.myweb.ApplesDO]的合适构造函数:无法从JSON对象实例化(需要添加/启用types信息?) 这是我试图发送的JSON: { "applesDO" : [ { "apple" : "Green Apple" }, { "apple" : "Red Apple" } ] } 在控制器中,我有以下方法签名: @RequestMapping("showApples.do") public String getApples(@RequestBody final AllApplesDO applesRequest){ // Method Code } AllApplesDO是ApplesDO的一个包装: public class AllApplesDO { private List<ApplesDO> applesDO; public List<ApplesDO> getApplesDO() { return applesDO; } public void setApplesDO(List<ApplesDO> applesDO) { this.applesDO = […]
如何在Java 8 LocalDateTime中使用Jackson JSON映射器? org.codehaus.jackson.map.JsonMappingException:无法从JSONstring实例化[simple type,class java.time.LocalDateTime]types的值; 没有单个string构造函数/工厂方法(通过引用链:MyDTO [“field1”] – > SubDTO [“date”])