我正在使用Jackson 2.4将对象序列化为JSON。
当我序列化对象列表时,如果某些元素为空,则结果json
字符串包含一些“空”字符串。
如何防止“null”
元素被序列化?objectmapper
是否有任何配置?我已经设置了“setSerializationInclusive(include.non_null)”
!
下面是我的代码:
List<String> strings = new ArrayList<>();
strings.add("string 1");
strings.add("string 2");
strings.add(null);
strings.add(null);
连载之后我得到了这个:
[string 1, string 2, null, null]
java prettyprint-override">[string 1, string 2]
使用@JSONInclude注释。
@JsonInclude(Include.NON_NULL)
class Foo {
String bar;
}
编辑
您还可以创建自己的序列化程序。
例如:
public static void main(String[] args) throws JsonProcessingException {
List<String> strings = new ArrayList<>();
strings.add("string 1");
strings.add("string 2");
strings.add(null);
strings.add(null);
ObjectMapper mapper=new ObjectMapper();
mapper.getSerializerProvider().setNullValueSerializer(new NullSerializer());
System.out.println(mapper.writeValueAsString(strings));
}
class NullSerializer extends JsonSerializer<Object>
{
@Override
public void serialize(Object obj, JsonGenerator jsonGen, SerializerProvider unused)
throws IOException, JsonProcessingException
{
jsonGen.writeFieldName("");
}
}
["string 1","string 2","",""]
然后可以删除jsongen.writeFieldName(“”);打印
["string 1","string 2"]
我的API有很多db调用,因此我需要使用或处理几乎每个数据库调用,但是有没有比这更好的方法 每次我要从数据库中检索用户行时?
编辑:应你们中一些人的要求,我发布了我的真实数据结构和类。我没能让你更容易理解这个问题。 我在解决JacksonJSON数组元素时遇到问题,最终出现异常,我将在本文后面报告。 我有一个来自第三方提供商的冗长的JSON字符串: 我的Java合奏如下。 这是最外层的容器: 这是第一级容器: 这是最里面的层次: 最后,这是我的反序列化代码: 在极端综合法中,我试图将问题概括如下: 类有一个模块成员,它是
我们最近从Jackson json 2.8.2转移到了2.9.4,我们看到了行为上的重大变化。我们使用的是JDK1.8。 前面,我们在对象映射器级别将序列化包含设置为NON_DEFAULT,所有操作都很正常。 现在,在更改为2.9.2之后,NON_DEFAULT将忽略所有默认值,如boolean false、integer 0、....这破坏了我们的测试用例。 我们的要求是只忽略空字段和空白字段,
我有一个JSON字符串,它将空列表标记为而不是。因此,例如,如果我有一个没有子对象的对象,我将收到这样的字符串: 我想将其反序列化为父类,将子类正确设置为子类的空列表。 对于上面的JSON字符串,我想要一个将其id设置为13的对象,并将子元素设置为新的ArrayList 我知道如何为整个类使用注释 然后呢 但是,我想解决从字符串正确实例化列表的一般问题: 我能得到这样的东西吗?
问题内容: 使用Jersey和Jackson创建REST接口,当其中包含0或1个元素时,如何将列表字段序列化为列表。例如: 当bar没有元素时,结果序列化为;当它包含单个元素时,结果序列化为该元素,而不是包含单个元素的数组。有没有办法让它们始终序列化为数组? 作为参考,我使用的是Jersey 1.10和Jackson 1.9.2。 问题答案: 我很确定您实际上并没有使用Jackson(JSON序列
问题内容: 我和Jackson有一个问题,我认为应该很容易解决,但是这真使我丧命。 假设我有一个看起来像这样的Java POJO类(假设对我来说是Getters和Setters): 我想将看起来像这样的JSON反序列化为User对象: 杰克逊给了我一些问题,因为用户不是JSON中的第一级对象。我显然可以制作一个具有单个User对象的UserWrapper类,然后使用该对象反序列化,但是我知道必须有