问题标签 [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.
java - Jackson JSON-RPC 反序列化为通用对象
我正在尝试使用 Jackson 反序列化 JSON-RPC 对象。JSON-RPC 的格式为:
{“结果”:“某事”,“错误”:空,“id”:1}
在我的情况下,结果属性是一个通用对象。
我有一门用于对响应进行反序列化的课程:
}
我可以通过以下方式获取响应对象:
我想要一个通用方法,通过将要反序列化到的对象(或者如果需要的话)的类型传递给方法来反序列化这个结果对象。这样我可以根据我期望的响应传递任何类型的对象。
例如,我有这个类有两个属性:
}
上述情况的响应内的结果对象将是:
"result": {"condition":"test","usage":"optional"}
我试过:
其中 result 是结果的 JsonNode 实例(由于某种原因是 LinkedHashMap)和 objectClass 我希望它反序列化到的类。但这不起作用。
我整天都在用不同的方式来做这件事,但我可能不明白杰克逊是谁工作的。
谁能帮我这个?
先感谢您。
json - 杰克逊将字段序列化为大写?
我的对象被序列化为 {name="nyname" ....},但是,我要求所有键都以大写开头,即。{Name="myname",.....} 我怎么能和杰克逊一起做呢?
java - 使用 Java 实现 Jackson 中的通用对象序列化
我想将字符串 {"a": 1.0}
作为通用 Java 对象读取,同时保持相同的字符串格式。但是,当我尝试时,杰克逊会自动将内部表示更改为{a = 1}
. 换句话说,我怎样才能得到下面的代码来打印{"a": 1.0}
而不是{a = 1}
?请注意,我必须将其读为Object
(由于其他程序限制)。
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
java - 如何通过 Jackson 生成器 html 转义值
我们使用 Spring 及其内置的 MappingJacksonHttpMessageConverter 生成大量 JSON 对象。都很棒。
但现在我想用html 转义我的(任何类型的)对象的字符串值,以防止 XSS。
那么,我该如何解决这个问题呢?我首先想到我可以编写一个自定义对象映射器并将其放入 MappkingJacksonHttpMessageConverter。但是,writeValue 需要一个对象,我不希望这样,我想让它的字段进行迭代。我敢打赌,杰克逊转换器也需要这样做,而不是我自己这样做。所以我想影响那部分。
现在我得到了一个 SerializerProvider 接口。标准实现(StdSerializerProvider)被 ObjectMapper 调用。所以我想在某个地方覆盖/影响负责设置值的方法。
那可能吗?据我所知,很难扩展。我无法覆盖 StdSerializerProvider 来覆盖 ObjectMapper 使用的方法。也许我需要覆盖另一个?
或者,也许这是完全错误的,我需要从一个完全不同的角度来处理它?
有什么想法吗?
哦,顺便说一句,我自己实现 SerializerProvider 并创建一个委托给 StdSerializerProvider 的合成可能是可能的,但我宁愿不这样做。(我自己在实例化 StdSerializerProvider 时已经遇到问题)。
任何想法表示赞赏!
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 将是:
提前致谢!!
java - 使用 Jackson 将 JSON 字符串转换为 Java 中的映射时出错
我有一小段代码,我正在尝试将 JSON 字符串转换为地图。
但它返回以下错误:
我究竟做错了什么?
jaxb - RESTEasy + Spring + Jackson + Jaxb
我正在尝试使用 RESTEasy 用 Jackson 序列化 JAXB 注释类。默认情况下,ResteasyJacksonProvider 配置为仅使用 JACKSON 注释。有没有办法配置 ResteasyJacksonProvider 使用 Spring 使用 JAXB 注释?有几种编程方式,但如果有一些弹簧配置,我会更喜欢。
我正在考虑的几种方法
对 ObjectMapper 类型使用 ContextResolver 以返回配置为使用 JaxbAnnotationIntrospector 而不是 JacksonAnnotationIntrospector 的 ObjectMapper。
扩展 ResteasyJacksonProvider 并在构建时传递 JAXB 注解。
还有什么办法吗?
android - android jackson json对象映射器数组反序列化
我需要帮助将杰克逊映射器的响应解析为 POJO。我有这个作为回应:
那么如何将这个与映射器绑定到 POJO?这是我正在尝试的课程,但它返回“项目”无法识别且不允许被忽略。
其中 item 是一个带有构造函数的公共静态类 Item,上面的所有字段都带有 getter 和 setter。
我该怎么做呢。我似乎无法在任何地方找到如何以这种方式从数组中读取数据。
android - 解析json,其中字段可以具有gson或jackson两种不同的类型
我有包含两种不同类型的字段的 json。
我对反序列化这些有问题。我的模型类包含:
我只需要将 {"@nil":"true"} 翻译成 null。现在我得到错误: