• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

杰克逊Included.NON_DEFAULT不工作在2.7.0

jackson 来源:jim 5次浏览

我想从杰克逊2.3升级到杰克逊2.7,并且它似乎@JsonIgnore(Include.NON_DEFAULT)行为已更改。 用下面的代码杰克逊Included.NON_DEFAULT不工作在2.7.0

package jackson; 

import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonInclude.Include; 
import com.fasterxml.jackson.databind.ObjectMapper; 

public class Test { 
    public static void main (String args[]) throws Exception { 
     MyClass foo = new MyClass(); 
     ObjectMapper mapper = new ObjectMapper(); 
     System.out.println(mapper.writeValueAsString(foo)); 
    } 

    public static enum MyEnum { A, B, C }; 

    public static class MyClass { 
     public String name = "John"; 

     @JsonInclude(Include.NON_DEFAULT) 
     public MyEnum myEnum = MyEnum.A; 
    } 
} 

我得到使用2.7的输出:以下使用2.3

{"name":"John","myEnum":"A"} 

和:

{"name":"John"} 

如何使用2.7版本复制在2.3的行为?


===========解决方案如下:

根据the bug ticket我把这个,它正在按预期和该功能可以通过结构化类的实现:

@JsonInclude(JsonInclude.Include.NON_DEFAULT) 
public static class MyClass { 

    @JsonInclude(JsonInclude.Include.ALWAYS) 
    public String name = "John"; 

    public MyEnum myEnum = MyEnum.A; 
} 

见票从笔者更详尽的解释。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)