Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON和Jackson_Json_Jackson - Fatal编程技术网

JSON和Jackson

JSON和Jackson,json,jackson,Json,Jackson,我如何告诉Jackson忽略JSON名称 我有以下几点建议: class MyPojo { private String ABCName; } 当我有以下情况时: “ABCName”:“foo”,然后Jackson没有意识到它抛出了错误 它期望的是: “abcName”:“foo” 代码: 输出:{“abcname”:“Foo”} 然后我尝试用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“ABC

我如何告诉Jackson忽略JSON名称

我有以下几点建议:

class MyPojo {
   private String ABCName;
}
当我有以下情况时:

“ABCName”:“foo”,然后Jackson没有意识到它抛出了错误

它期望的是:

“abcName”:“foo”

代码:

输出:{“abcname”:“Foo”}

然后我尝试用@JsonProperty(“ABCName”)注释ABCName

在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“ABCName”:“Foo”}

结果是重复的

我有一个JSON客户端,它将作为“ABCName”:“Foo”发送,我需要在Jackson中处理它

有什么解决办法吗

谢谢您的时间。

您可以试试genson。下面的代码应该会产生您期望的结果

String json = "{\"ABCName\" : \"foo\"}";
MyPojo my = new MyPojo();
my.setABCName("Foo");

Genson genson = new Genson();
System.out.println(genson.serialize(my));
System.out.println(genson.deserialize(json, MyPojo.class).ABCName);

 public static class MyPojo {
     private String ABCName;
     public void setABCName(String ABCName) {
         this.ABCName = ABCName;
     }

     @JsonProperty("ABCName") public String getABCName() {
         return ABCName;
     }
 }

实际上,以下几点与杰克逊本人有关:

public class MyPojo {
     private String ABCName;
     public void setABCName(String ABCName) {
         this.ABCName = ABCName;
     }

     @JsonProperty("ABCName") 
public String getABCName() {
         return ABCName;
     }
 }
结果:{“ABCName”:“Foo”}

但当您对字段进行注释时,会产生重复项,这意味着以下内容不起作用:

public class MyPojo {
         @JsonProperty("ABCName") 
         private String ABCName;
         public void setABCName(String ABCName) {
             this.ABCName = ABCName;
         }


    public String getABCName() {
             return ABCName;
         }
     }
结果:{“ABCName”:“Foo”,“ABCName”:“Foo”}

看起来注释必须位于getter方法之上


非常感谢。

您可以通过如下设置annotation introspector来尝试jackson本身

公共类测试{

    public static void main(String args[]) throws Exception {

        ObjectMapper mapper = new ObjectMapper();
        AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
        mapper.setAnnotationIntrospector(introspector);
        MyPojo my = new MyPojo();
        my.setABCName("Foo");
        System.out.println(mapper.writeValueAsString(my));

    }

    private static class MyPojo {

        @JsonProperty("ABCName")
        private String ABCName;
        public void setABCName(String ABCName) {
            this.ABCName = ABCName;
        }

        public String getABCName() {
            return ABCName;
        }
    }

}
    public static void main(String args[]) throws Exception {

        ObjectMapper mapper = new ObjectMapper();
        AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
        mapper.setAnnotationIntrospector(introspector);
        MyPojo my = new MyPojo();
        my.setABCName("Foo");
        System.out.println(mapper.writeValueAsString(my));

    }

    private static class MyPojo {

        @JsonProperty("ABCName")
        private String ABCName;
        public void setABCName(String ABCName) {
            this.ABCName = ABCName;
        }

        public String getABCName() {
            return ABCName;
        }
    }

}