- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在反序列化一个大的 json 值。该值深层嵌套的是一个 json 对象,如下所示:
{
"fieldOne": "valueOne",
"fieldTwo": {
"innerField": "innerValue"
}
}
我正在使用 Jackson ObjectMapper
将大型 json 值反序列化为第 3 方类。深深嵌套在该第 3 方类中的是另一个第 3 方类:
public class DeepThirdPartyClass {
public String fieldOne;
}
不幸的是缺少fieldTwo
属性。我可以创建自己的类来添加缺少的字段:
public class MyClass extends DeepThirdPartyClass {
public MySubObject fieldTwo;
}
如何配置 jackson,以便每当它尝试将值反序列化为 DeepThirdPartyClass
时,它都会反序列化为 MyClass
?
最佳答案
当我必须过滤所有字符串值中的任何不允许的字符时,我有类似的要求。创建对象映射器:
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
super();
SimpleModule module = new SimpleModule("HTML XSS Serializer", new Version(1, 0, 0, "FINAL", "com.crowdoptic", "web"));
module.addSerializer(String.class, new JsonHtmlXssSerializer());
module.addDeserializer(String.class, new JsonHtmlXssDeserializer());
this.registerModule(module);
}
}
public class JsonHtmlXssDeserializer extends StdScalarDeserializer<String> {
private static final Logger LOG = LogManager.getLogger(JsonHtmlXssDeserializer.class);
public JsonHtmlXssDeserializer() { super(String.class); }
@Override
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
String value = StringDeserializer.instance.deserialize(p, ctxt);
LOG.trace("in deserialize for value: " + value);
String encodedValue = StringEscapeUtils.escapeHtml4(value);
return encodedValue;
}
@Override
public String deserializeWithType(JsonParser jp, DeserializationContext ctxt, TypeDeserializer typeDeserializer) throws IOException {
return StringDeserializer.instance.deserializeWithType(jp, ctxt, typeDeserializer);
}
@Override
public boolean isCachable() { return StringDeserializer.instance.isCachable(); }
}
在您的情况下,您可以注册类反序列化器,调用对象反序列化器的 super 方法。然后,不返回 DeepThirdPartyClass,而是创建 MyClass 对象,从 DeepThirdPartyClass 设置字段一并添加第二个字段。有关实现细节和可用属性,请参阅 StringDeserializer 和其他内容。
请告诉我这是否有帮助。
关于java - 如何配置 Jackson ObjectMapper 将 Foo 类型的所有字段反序列化为 SubclassOfFoo 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40390429/
这是我的设置: 带有自定义 MessageConverter 的 ObjectMapper 的 RestTemplate,它具有一些反序列化功能和问题处理程序 (Jackson Fasterxml 2
我们有一个基于 Spring 的应用程序,并且我们为 Jackson ObjectMapper 类定义了一个单例 bean。 @Bean(name = "jacksonObjectMapper") p
当依赖项中的 jar 中定义了另一个对象映射器时,如何使我的对象映射器工作? 我正在尝试使用 Swagger与 Jersey 2在 Jetty 下运行。问题是,一旦我将 Swagger JAX-RX
我刚刚更新到 Xcode 10.1 Swift 版本 4.2.1 我有几个构建错误: Invalid redeclaration of ' 3.3' $ pod 'ObjectMapper', '3.
您好,我是 IOS 开发的新手。我正在创建一个小应用程序。我正在尝试导入 ObjectMapper 但它没有找到任何模块。我已经安装了 pod。我的 pod 文件看起来像: target 'Sam
ObjectMapper 忽略字段大小写 核心代码: ObjectMapper mapper = new ObjectMapper(); mapper.configure(Deser
我加载一个资源文件json与文本格式 { "sources": [{ "prop1": "1", "prop2": "2" },
我有以下类(class): public class Car{ private String id; private String name; public Car() { } public Car(
使用 ObjectMapper 解析通用对象时出现错误这是我的类(class): class BaseResponse: NSObject, Mappable { var isSuccess:
我正在将印地语存储在数据库中。在我的 fetch 方法中,我使用 objectMapper 它将印地语字体转换为特殊字符。没有objectmapper它工作正常。 @CrossOrigin @
我正在尝试使用 Jackson ObjectMappper 将我的 Java POJO 转换为 Map。但是,在转换时,日期会更改为字符串。 这是我的 POJO: public class Sampl
我将日期传递为 "scoreTimestamp": "2015-04-15T10:00:00.000Z",并希望将此 json 作为字符串保存在数据库中,因此使用方法 ObjectMapper ob
使用 ObjectMapper 解析通用对象时出现错误这是我的类(class): class BaseResponse: NSObject, Mappable { var isSuccess:
我遇到了一个我不知道如何解决的问题。 当我尝试将此 JSON 映射到 User 对象时,它失败了: SwiftyJSON 在“2.3.3” JSON: { "results":[
我有一个自定义的 ObjectMapper 类。我想根据数据将元素映射到不同的对象类型。我已经实现了如下逻辑。但它没有给我值,只是 null。 class FeedObject : Object, M
我正在从服务器解析 json。我在 json 中获得了 4 个值,因此我创建了模型类 class PriceData: Mappable { var buy: Double? var sell: Do
我有这个映射器: import Foundation import ObjectMapper class Article: Mappable { var id: Int! var na
我有下面的一段代码,可以将带注释的 Java 对象转换为 Json 字符串。 try { String jsonString = mapper.writeValueAsStr
这个问题在这里已经有了答案: Jackson - Required property? (4 个答案) 关闭 7 年前。 假设我有这样的 json,我想将它反序列化为一个名为 SubscriberP
我有一个 JSON,我将其解析为结果对象列表。此对象包含 5 个字符串字段,称为 photo1、photo2 等。(基于 JSON)是否可以将它们直接读入列表字段? JSON 喜欢: { "E
我是一名优秀的程序员,十分优秀!