问题标签 [jackson]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3828 浏览

java - Jackson JSON-RPC 反序列化为通用对象

我正在尝试使用 Jackson 反序列化 JSON-RPC 对象。JSON-RPC 的格式为:

{“结果”:“某事”,“错误”:空,“id”:1}

在我的情况下,结果属性是一个通用对象。

我有一门用于对响应进行反序列化的课程:

}

我可以通过以下方式获取响应对象:

我想要一个通用方法,通过将要反序列化到的对象(或者如果需要的话)的类型传递给方法来反序列化这个结果对象。这样我可以根据我期望的响应传递任何类型的对象。

例如,我有这个类有两个属性:

}

上述情况的响应内的结果对象将是:

"result": {"condition":"test","usage":"optional"}

我试过:

其中 result 是结果的 JsonNode 实例(由于某种原因是 LinkedHashMap)和 objectClass 我希望它反序列化到的类。但这不起作用。

我整天都在用不同的方式来做这件事,但我可能不明白杰克逊是谁工作的。

谁能帮我这个?

先感谢您。

0 投票
1 回答
1852 浏览

json - 杰克逊将字段序列化为大写?

我的对象被序列化为 {name="nyname" ....},但是,我要求所有键都以大写开头,即。{Name="myname",.....} 我怎么能和杰克逊一起做呢?

0 投票
4 回答
15101 浏览

java - 使用 Java 实现 Jackson 中的通用对象序列化

我想将字符串 {"a": 1.0} 作为通用 Java 对象读取,同时保持相同的字符串格式。但是,当我尝试时,杰克逊会自动将内部表示更改为{a = 1}. 换句话说,我怎样才能得到下面的代码来打印{"a": 1.0}而不是{a = 1}?请注意,我必须将其读为Object(由于其他程序限制)。

0 投票
1 回答
20715 浏览

java - 将 Jersey/Jackson 配置为不使用 @XmlElement 字段注释进行 JSON 字段命名

我正在运行 Jersey REST 服务。代表我的资源的 POJO 是带有 JAXB (XML) 注释的简单 Java 类(它们是从模式定义生成的 - 因此它们具有注释)。

我希望 Jersey/Jackson 忽略 XML 注释。我在 web.xml 中进行了此配置(如此处所述

我现在预计 @XMLElement 注释将不再用于 JSON 字段命名策略。

但是看着这个java字段(成员)

我仍然得到以下 JSON 表示:

所有其他字段也仍然从 @XmlElement 注释而不是 Java 字段名称中获取其 JSON 名称。

我想实现 Jackson Full Data Binding (POJO) Example中描述的 JSON 输出。

它在像这样的简单测试中运行良好(使用我的 XML 注释类):

但嵌入泽西岛我没有得到预期的 JSON 输出。

他们在泽西岛的其他配置选项是否可以获得“简单”的 POJO JSON 表示(因为这最适合必须反序列化 JSON 结果的客户端)。

谢谢克劳斯

详细解决方案

(1)ContextResolver为 Jacksons实现一个ObjectMapper不使用注释的 ObjectMapper。

(2) 在你的 application.xml 中注册 ContextResolver Spring bean

0 投票
2 回答
7022 浏览

java - 如何通过 Jackson 生成器 html 转义值

我们使用 Spring 及其内置的 MappingJacksonHttpMessageConverter 生成大量 JSON 对象。都很棒。

但现在我想用html 转义我的(任何类型的)对象的字符串值,以防止 XSS。

那么,我该如何解决这个问题呢?我首先想到我可以编写一个自定义对象映射器并将其放入 MappkingJacksonHttpMessageConverter。但是,writeValue 需要一个对象,我不希望这样,我想让它的字段进行迭代。我敢打赌,杰克逊转换器也需要这样做,而不是我自己这样做。所以我想影响那部分。

现在我得到了一个 SerializerProvider 接口。标准实现(StdSerializerProvider)被 ObjectMapper 调用。所以我想在某个地方覆盖/影响负责设置值的方法。

那可能吗?据我所知,很难扩展。我无法覆盖 StdSerializerProvider 来覆盖 ObjectMapper 使用的方法。也许我需要覆盖另一个?

或者,也许这是完全错误的,我需要从一个完全不同的角度来处理它?

有什么想法吗?

哦,顺便说一句,我自己实现 SerializerProvider 并创建一个委托给 StdSerializerProvider 的合成可能是可能的,但我宁愿不这样做。(我自己在实例化 StdSerializerProvider 时已经遇到问题)。

任何想法表示赞赏!

0 投票
1 回答
4715 浏览

serialization - Spring MVC + Jackson:动态Json序列化

我将 Spring MVC 3.0.5 与 Jackson 1.7.2 一起使用。

我希望实现一个动态 Bean 序列化程序分配机制,例如,假设我的 MVC 控制器返回 ( @ResponseBody) 一个 MyObject 类型的对象。默认情况下,Jackson 的 SerializerFactory 将寻找最合适的序列化器,包括我的自定义序列化器(例如CustomSerializer extends JsonSerializer<MyObject>)。

但是,我希望触发我的自定义序列化程序,以防万一某些标志处于活动状态(比如说,附加到 ThreadLocal 的布尔变量)。否则,我想使用 Jackson 提供MappingJacksonHttpMessageConverter的序列化器,保持默认行为不变。

有什么方法可以实现吗?

我已经将我自己的 ObjectMapper、SerializerFactory 和 CustomSerializers 注册到 Spring 的<mvc:annotaion-driven />defaultMappingJacksonHttpMessageConverter中。

spring-mvc.xml 将是:

提前致谢!!

0 投票
2 回答
17027 浏览

java - 使用 Jackson 将 JSON 字符串转换为 Java 中的映射时出错

我有一小段代码,我正在尝试将 JSON 字符串转换为地图。

但它返回以下错误:

我究竟做错了什么?

0 投票
2 回答
1755 浏览

jaxb - RESTEasy + Spring + Jackson + Jaxb

我正在尝试使用 RESTEasy 用 Ja​​ckson 序列化 JAXB 注释类。默认情况下,ResteasyJacksonProvider 配置为仅使用 JACKSON 注释。有没有办法配置 ResteasyJacksonProvider 使用 Spring 使用 JAXB 注释?有几种编程方式,但如果有一些弹簧配置,我会更喜欢。

我正在考虑的几种方法

  1. 对 ObjectMapper 类型使用 ContextResolver 以返回配置为使用 JaxbAnnotationIntrospector 而不是 JacksonAnnotationIntrospector 的 ObjectMapper。

  2. 扩展 ResteasyJacksonProvider 并在构建时传递 JAXB 注解。

还有什么办法吗?

0 投票
3 回答
9538 浏览

android - android jackson json对象映射器数组反序列化

我需要帮助将杰克逊映射器的响应解析为 POJO。我有这个作为回应:

那么如何将这个与映射器绑定到 POJO?这是我正在尝试的课程,但它返回“项目”无法识别且不允许被忽略。

其中 item 是一个带有构造函数的公共静态类 Item,上面的所有字段都带有 getter 和 setter。

我该怎么做呢。我似乎无法在任何地方找到如何以这种方式从数组中读取数据。

0 投票
1 回答
1656 浏览

android - 解析json,其中字段可以具有gson或jackson两种不同的类型

我有包含两种不同类型的字段的 json。

我对反序列化这些有问题。我的模型类包含:

我只需要将 {"@nil":"true"} 翻译成 null。现在我得到错误: