java – 杰克逊的JsonIgnore
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 杰克逊的JsonIgnore,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2989字,纯文字阅读大概需要5分钟。
内容图文
JsonIgnore注释似乎对我不起作用.有什么想法吗?
public class JsonTest implements Serializable {
@JsonIgnore
private static JsonTest instance = null;
@JsonIgnore
private transient Set<String> set = new CopyOnWriteArraySet<String>();
private JsonTest() {}
@JsonIgnore
public static JsonTest getInstance() {
if (instance == null)
instance = new JsonTest();
return instance;
}
public void setSet(Set<String> set) {
this.set = set;
}
@JsonIgnore
public Set<String> getSet() {
return set;
}
public String toString() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
try {
return mapper.writeValueAsString(this);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("test");
JsonTest.getInstance().setSet(set);
System.out.println(JsonTest.getInstance().toString());
}
}
输出:{“set”:[“test”]}
解决方法:
瞬态意味着该字段不会被序列化.您不需要在那里添加@JsonIgnore注释,因为无论如何都会排除该字段.
您至少可以在org.codehaus.jackson中找到@JsonIgnore注释:jackson-mapper-asl:1.9.13和com.fasterxml.jackson.core:jackson-annotations:2.4.3(这是我使用的). ObjectMapper位于jackson-mapper-asl工件中.这里有趣的部分是,如果我使用来自jackson-annotations的@JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) – 即使我将ObjectMapper配置为仅使用属性,它也不起作用(‘set’响应) .可能它是fastxml实现中的一个错误,但我没有找到它.
所以,如果你使用codehaus而不是fastxml(我添加配置只使用字段),它工作正常:
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
public class JsonTest implements Serializable {
@JsonIgnore
private static JsonTest instance = null;
private transient Set<String> set = new CopyOnWriteArraySet<String>();
private JsonTest() {}
@JsonIgnore
public static JsonTest getInstance() {
if (instance == null)
instance = new JsonTest();
return instance;
}
public void setSet(Set<String> set) {
this.set = set;
}
@JsonIgnore
public Set<String> getSet() {
return set;
}
public String toString() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
mapper.setVisibilityChecker(mapper.getSerializationConfig().getDefaultVisibilityChecker()
.withFieldVisibility(JsonAutoDetect.Visibility.ANY)
.withGetterVisibility(JsonAutoDetect.Visibility.NONE)
.withSetterVisibility(JsonAutoDetect.Visibility.NONE)
.withCreatorVisibility(JsonAutoDetect.Visibility.NONE));
try {
return mapper.writeValueAsString(this);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
HashSet<String> set = new HashSet<String>();
set.add("test");
JsonTest.getInstance().setSet(set);
System.out.println(JsonTest.getInstance().toString());
}
}
内容总结
以上是互联网集市为您收集整理的java – 杰克逊的JsonIgnore全部内容,希望文章能够帮你解决java – 杰克逊的JsonIgnore所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。