JSON和Jackson
我如何告诉Jackson忽略JSON名称 我有以下几点建议: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
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;
}
}
}