- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何为对象读取器应用反序列化功能 (FAIL_ON_UNKNOWN_PROPERTIES)?我知道如何为 objectMapper 完成它,但是如何在 codehaus jackson 中的 objectReader 上完成它?
最佳答案
自从 Jackson 引入了一些版本 ObjectReader#with
实现你想要的方法。也许迁移到更高版本会更容易。
但是,如果您不能使用更高版本,您可以使用 ObjectMapper#configure
设置此功能。方法。将此功能设置为 true
后你可以创建ObjectReader
来自 ObjectMapper
与 reader
方法。
正如您在 ObjectReader
的文档中看到的那样创建后无法更改其功能。但是读者不共享映射器状态。因此,如果您需要从一个映射器创建多个读取器,并且只有少数读取器需要此选项,您可以在 ObjectMapper
中设置功能。只为他们。您可以像这样获取该功能的当前状态
boolean enabled = mapper.getDeserializationConfig().isEnabled(feature);
改变状态然后恢复到原来的状态。参见 createReader(Class<T> clazz, DeserializationConfig.Feature feature)
示例中的方法。
这是我们要反序列化的 POJO
class ExamplePojo {
private int a1;
private String b1;
public ExamplePojo() {
}
public ExamplePojo(int a1, String b1) {
this.a1 = a1;
this.b1 = b1;
}
public int getA1() {
return a1;
}
public void setA1(int a1) {
this.a1 = a1;
}
public String getB1() {
return b1;
}
public void setB1(String b1) {
this.b1 = b1;
}
}
这是一个例子
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ObjectReader;
import org.codehaus.jackson.map.exc.UnrecognizedPropertyException;
public class JacksonExample {
static ObjectMapper mapper = new ObjectMapper();
public static <T> ObjectReader createReader(Class<T> clazz, DeserializationConfig.Feature feature) {
boolean enabled = mapper.getDeserializationConfig().isEnabled(feature);
mapper.configure(feature, true);
ObjectReader reader = mapper.reader(clazz);
mapper.configure(feature, enabled);
return reader;
}
public static <T> ObjectReader createReader(Class<T> clazz) {
return mapper.reader(clazz);
}
public static void main(String[] args) throws Exception {
// by default turn off this feature
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// Should fail
ObjectReader r1 = createReader(ExamplePojo.class, DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);
try {
ExamplePojo ex = r1.readValue("{\"a1\":1,\"b1\":\"Hello!\",\"c1\":1}");
System.out.println(ex.getA1() + " " + ex.getB1());
} catch (UnrecognizedPropertyException ex) {
System.out.println(ex.getMessage());
}
// Should be ok
ObjectReader r2 = createReader(ExamplePojo.class);
try {
ExamplePojo ex = r2.readValue("{\"a1\":2,\"b1\":\"Hello!\",\"c1\":2}");
System.out.println(ex.getA1() + " " + ex.getB1());
} catch (UnrecognizedPropertyException ex) {
System.out.println(ex.getMessage());
}
// Should fail
try {
ExamplePojo ex = r1.readValue("{\"a1\":3,\"b1\":\"Hello!\",\"c1\":3}");
System.out.println(ex.getA1() + " " + ex.getB1());
} catch (UnrecognizedPropertyException ex) {
System.out.println(ex.getMessage());
}
// Should be ok
try {
ExamplePojo ex = r2.readValue("{\"a1\":4,\"b1\":\"Hello!\",\"c1\":4}");
System.out.println(ex.getA1() + " " + ex.getB1());
} catch (UnrecognizedPropertyException ex) {
System.out.println(ex.getMessage());
}
}
}
这个例子的输出
Unrecognized field "c1" (Class ExamplePojo), not marked as ignorable at [Source: java.io.StringReader@7c30a502; line: 1, column: 29] (through reference chain: ExamplePojo["c1"])
2 Hello!
Unrecognized field "c1" (Class ExamplePojo), not marked as ignorable at [Source: java.io.StringReader@49e4cb85; line: 1, column: 29] (through reference chain: ExamplePojo["c1"])
4 Hello!
关于java - codehaus jackson ObjectReader 的反序列化功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33207282/
所以 codehaus 关闭了(显然是在周末):https://www.codehaus.org/ 现在它在这里说“Maven:所有存储库都镜像到 Central,我们的 Nexus 由 Sonaty
我们有一些引用“http://enunciate.codehaus.org/schemas/enunciate-1.27.xsd”的 XML 文件',现在已经消失了。 我正在使用的当前子: https
eclipse 中这个被上帝遗忘的错误不会消失。我已经尝试了这里和其他地方提到的所有东西来摆脱它,但它不会消失,现在我不能在 eclipse 中使用 Web 服务实用程序,因为它提示这个“问题”,这显
我创建了一个服务 公共(public)类 JsonSpiceService 扩展了 SpringAndroidSpiceService{ @Override public Re
我正在使用 Java 11、Spring Boot 2.1.1 和 Apache CXF 3.2.7 公开导入 XSD 架构的 SOAP Web 服务。在 WSDL 中它显示为: 当我发送查询失败
仅当将“-p”添加到 org.codehaus.mojo:exec-maven-plugin:1.6.0:exec 插件时,以下 pom.xml 执行才会失败,删除此参数后它运行正常,但我需要争论,有
本文整理了Java中org.codehaus.xfire.XFireException类的一些代码示例,展示了XFireException类的具体用法。这些代码示例主要来源于Github/Stacko
我正在尝试使用NetBeans构建JavaFX项目,但是当我运行它时,我有一个this: Plugin org.codehaus.mojo:exec-maven-plugin:1.2.1 or one
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
本文整理了Java中org.codehaus.stax2.validation.XMLValidationSchema类的一些代码示例,展示了XMLValidationSchema类的具体用法。这些代
本文整理了Java中org.codehaus.stax2.validation.XMLValidator类的一些代码示例,展示了XMLValidator类的具体用法。这些代码示例主要来源于Github
本文整理了Java中org.codehaus.stax2.validation.XMLValidationException类的一些代码示例,展示了XMLValidationException类的具体
本文整理了Java中org.codehaus.xfire.client.XFireProxyFactory类的一些代码示例,展示了XFireProxyFactory类的具体用法。这些代码示例主要来源于
本文整理了Java中org.codehaus.cargo.util.XmlReplacement类的一些代码示例,展示了XmlReplacement类的具体用法。这些代码示例主要来源于Github/S
本文整理了Java中org.codehaus.cargo.util.XmlUtils类的一些代码示例,展示了XmlUtils类的具体用法。这些代码示例主要来源于Github/Stackoverflow
截至今天,我突然在一个我有一段时间没有打开但以前工作的旧项目中遇到错误。 错误:程序类型已经存在:org.codehaus.jackson.JsonParser$1 它随机发生在各种 org.code
如何为对象读取器应用反序列化功能 (FAIL_ON_UNKNOWN_PROPERTIES)?我知道如何为 objectMapper 完成它,但是如何在 codehaus jackson 中的 obje
我从一本书下载的一个项目中有以下 pom.xml... 我收到以下错误, 无法在 http://snapshots.repository.codehaus.org 中找到 org.codehaus.m
本文整理了Java中org.codehaus.enunciate.contract.jaxws.WebMethod类的一些代码示例,展示了WebMethod类的具体用法。这些代码示例主要来源于Gith
本文整理了Java中org.codehaus.xfire.XFireException.()方法的一些代码示例,展示了XFireException.()的具体用法。这些代码示例主要来源于Github/
我是一名优秀的程序员,十分优秀!