Tag: jackson

使用Jackson序列化类型集合时出错

我正在尝试使用混音序列化一个集合,但jackson不会保存类型信息。 这是一个基本测试,说明了会发生什么: public class CollectionSerializationTest { interface Common extends Serializable { } class A implements Common { private static final long serialVersionUID = 1L; } @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = “type”) @JsonSubTypes({ @JsonSubTypes.Type(value = A.class, name = “CODE”) }) class AMixIn { } @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = “type”) […]

如何在自定义反序列化器中使用一些Jackson Deserializer?

我正在努力解决问题中提到的问题。 我需要创建一些自定义反序列化器,它或多或少是标准反序列化器的类型转换(原因是ZonedDateTime适用于我的输入,但我不想将类型更改为ZonedDateTime ,但保留LocalDateTime )。 基本上我想在我的解串器中做的是: 使用ZonedDateTime反序列化器反序列化(我发现,实际上是自定义的InstantDeserializer ) 使用.toLocalDateTime并返回它。 我怎么用呢? 试图找到它,但我不能。

阻止Jackson中的自动String to Integer转换

我有一个简单的POJO: public class ADate { private Integer day; private Integer month; private Integer year; … // getters/setters/constructor } 以下JSON文档正确反序列化为ADate : { “day”:”10″, “month”:”2″, “year”:”1972″ } Jackson自动将String转换为Integer。 有没有办法避免这种自动转换,如果将Integer值定义为String,则让Jackson失败。

使JsonNode可序列化

这似乎很简单,但我没有得到序列化的JsonNode反序列化。 这是我的测试课 import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class Foo implements Serializable { private String string; private transient JsonNode jsonNode; public Foo(String string, JsonNode jsonNode) { this.string = string; this.jsonNode = jsonNode; } private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); if (this.jsonNode != null) out.writeObject((new ObjectMapper()).writeValueAsBytes(this.jsonNode)); // […]

如果RequestBody参数的某些属性为null,如何返回400 HTTP错误代码?

我有以下示例: 这是请求正文: public class UserLoginData implements Serializable { private static final long serialVersionUID = 1L; private String username; private String password; //… getter and setters } 这是控制器: @RequestMapping(value = {“/login”}, method = RequestMethod.POST) @ResponseBody public LoginResponse login(@RequestBody(required = true) UserLoginData loginData){ //… some code } 这是我调用服务的方式: POST /login {“username”:”neuquino”} 我希望Spring返回HTTP 400 BAD REQUEST错误,因为密码丢失了。 但不是这样,它返回HTTP 500 […]

使用没有注释的@JsonIdentityInfo

我使用Jackson 2.2.3将POJO序列化为JSON。 然后我遇到了问题,我无法序列化递归结构……我通过使用@JsonIdentityInfo =>解决了这个问题。 但是,我不希望这个注释放在我的POJO之上。 所以我的问题是:是否还有其他可能设置我的ObjectMapper的默认行为来为每个POJO使用该function? 所以我想转换这个注释代码 @JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property=”@id”) 喜欢的东西 ObjectMapper om = new ObjectMapper(); om.setDefaultIdentityInfo(ObjectIdGenerators.IntSequenceGenerator.class, “@id”); 有任何想法吗?

将Java对象转换为JSON对象时的性能问题

在完成将Java对象转换为JSON的确切任务之前,我已经在下面的示例中进行了测试。 使用Jackson将Java对象转换为JSON 我一直在寻找更好的性能(转换时间应该非常少)。 本文显示了此答案中不同API之间性能的统计信息。 我的发现是例如我提到的第一个链接(记录很少): ValueData object = new ValueData(); List information = new ArrayList(); ValueItems v1 = new ValueItems(String.valueOf(Calendar.getInstance().getTimeInMillis()), “feat1”, 1, “data1”); ValueItems v2 = new ValueItems(String.valueOf(Calendar.getInstance().getTimeInMillis()), “feat2”, 2, “data2”); ValueItems v3 = new ValueItems(String.valueOf(Calendar.getInstance().getTimeInMillis()), “feat3”, 3, “data3”); ValueItems v4 = new ValueItems(String.valueOf(Calendar.getInstance().getTimeInMillis()), “feat4”, 4, “data4”); ValueItems v5 = new ValueItems(String.valueOf(Calendar.getInstance().getTimeInMillis()), “feat5”, 5, “data5”); […]

如何配置Jackson以默认键入反序列化命名类型?

请考虑以下示例: package com.example; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping; public class JacksonDeserializationOfNamedTypes { public static void main(String[] args) throws Exception { ObjectMapper jackson = new ObjectMapper(); jackson.enableDefaultTypingAsProperty(DefaultTyping.JAVA_LANG_OBJECT, “@type”); Balloon redBalloon = new Balloon(“red”); String json = jackson.writeValueAsString(redBalloon); //{“@type”:”Balloon”,”color”:”red”} //assume the JSON could be anything Object deserialized = jackson.readValue(json, Object.class); assert deserialized […]

使用java.util.Currency的Mongo spring-data问题

获取错误“在实体类java.util.Currency上找不到属性null” 嗨,我有文档类 @Document @JsonInclude(Include.NON_NULL) public class Course { @Id private String id; private String title; private Currency curr; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Currency getCurr() { return […]

jackson – 将java对象转换为json – 需要所有关键键到大写

需要你的帮助将java对象转换为json。 当前json结果显示小写字母的所有键,我需要它是大写。 ObjectMapper mapper = new ObjectMapper(); Writer strWriter = new StringWriter(); mapper.writeValue(strWriter, obj); String jsonString= strWriter.toString(); 结果是 [{“flags”:”1″,”name”:”Peter”,”location”:”London”,”startDate”:”2012-01-06 00:00″}] 但我想要这样的结果(所有关键键值应该是大写的): [{“FLAGS”:”YU”,”NAME”:”Peter”,”LOCATION”:”London”,”STARTDATE”:”2012-01-06 00:00″}] 并且也可以这样(大写的关键第一个字母): [{“Flags”:”1″,”Name”:”Peter”,”Location”:”London”,”StartDate”:”2012-01-06 00:00″}] 谁可以帮我这个事。 提前致谢。