问题标签 [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 - 春天的正确版本或杰克逊是什么?
我正在使用杰克逊转换器(MappingJacksonHttpMessageConverter)从弹簧控制器消费和产生 json 数据。但是在调用控制器时会引发以下异常。
我的代码:
弹簧豆文件:
abc.CartType abc.CartResponseType
pom 文件(仅限片段)
我可以在 spring-web pom 文件中看到 jackson 版本被提到为 1.4.2 和我使用过的相同,它仍然抛出关于找不到方法的异常。我使用正确的版本吗?
java - 基于变量在杰克逊 JSON 中使用不同的 bean 类?
我有如下 JSON:
基本上是具有相同变量的对象列表。在我的代码中,我想创建一个 A 类的 ArrayList,其中包含这些对象。但是,我希望每个对象都属于一或二子类,具体取决于“种类”值。
我怎样才能做到这一点?
谢谢!
java - 如何完全匹配来自 cxf 的 json 输出?
编辑:我很困惑——使用的是 cxf,而不是球衣。有没有办法将带注释的对象转换为类似于杰克逊的 ObjectMapper 的 json?
原味精:
您好,我们目前正在使用 jaxrs 将我们的 Web 响应转换为 xml/json。然而,我现在想做的是使用 ObjectMapper(?) 在我的代码中生成一个等效的 json 字符串。
例如,给定一个控制器和带有 jaxb 注释的返回对象:
点击http://myserver/.../foo.json会输出一些漂亮的 json:
现在我希望能够在内部生成确切的 json:
但是,这似乎根本不起作用。大多数带注释的属性和元素都丢失了,属性没有像 jaxrs 输出那样以“@”为前缀,等等。
我错过了一些简单的东西吗?jaxrs 本身如何将带注释的对象转换为 json 字符串?
谢谢!乔
java - 将 Jackson 与 Jersey 一起使用时,JsonTypeInfo 不序列化
我用 JsonTypeInfo 注释了一个 JAXB 类,以便我可以轻松地序列化多态类。但是,由 Jersey 序列化时不会显示注释。更具体地说,它在使用 ObjectMapper 时出现,但不是作为资源的返回类型。我现在很困惑,因为这似乎是 Jersey => Jackson 交互的问题。
为了调试,我使用了 jersey-samples 中的 jsonfromjaxb 示例来定位我的问题。我在 Flight 类中添加了以下内容,以使其序列化到 @class。
我在资源中有以下可用方法,一种仅返回 JAXB 对象,另一种手动使用 ObjectMapper
查询 /jsonfromjaxb/flights 的结果
查询 /jsonfromjaxb/flights/object_mapper 的结果
谢谢,赎金
jquery - 无法从带注释的控制器获取自动格式化的 json 数据
据我了解,如果您使用的是 mvc:annotation-driven 标记,那么您可以传回 JSON 格式的对象,前提是相关的 jackson jar 文件存在于类路径中。情况就是这样。
但是,我从服务器收到 406(不可接受)响应。
这是带注释的控制器的相关部分:
这是客户端页面上的jquery代码:
我尝试放置在类路径中的杰克逊罐子是:
jackson-core-asl-1.7.2.jar 和 jackson-mapper-asl-1.7.2.jar
我也试过
jackson-all-1.7.2.jar
仍然得到可怕的406 ..
DateResponse 对象是否需要显式注释才能将其转换为 JSON?我会认为使用现有的字段名称将是默认行为。
我认为最令人沮丧的是,我看不到任何后端异常,所以我正在尝试和错误。
编辑:这是http标头
这是 dispatcher-servlet.xml 文件:
EDIT2:这是 catalina.out
这是同一时期的本地主机日志:
java - 杰克逊 JSON 处理器问题
我已经为此挠头好几个小时了:
Jsckson 反序列化B
但炸弹在C
下面:
B
和C
都是 的子类A
,因此有一个 setter getName
。请注意,大写N
是Name
故意的,这就是我的 JSON 的外观。反序列化C
抱怨 Unrecognized field name Name
,因为B
没关系。
版本 1.7.2
json - 获取数组列表或类
我尝试将应用程序连接到外部服务,该服务为我提供了一个类似的数组
或者在出现错误的情况下
有没有办法将其定义为单个类或识别流是哪个对象?
更新 1:我已经通过在循环中运行 100 次并计算平均执行时间来测试多个版本。在所有不同的版本中,我都使用了杰克逊。
这是性能的基线。它不能满足业务需求,因为代码没有区分数组和对象。
照片:平均 100 次处决。持续时间:923ms
使用解析器会使性能降低大约 min。50%
照片:平均 100 次处决。持续时间:1585ms
将 InputStream 转换为 String 并保留 objectMapper.readValue 解决方案会导致:
照片:平均 100 次处决。持续时间:1191ms
更新结束 1
java - Jackson:字段序列化格式取决于其他字段值
我有以下 Java 类,我想使用 Jackson 将其序列化为 JSON:
但是我想在 allDay 为真时将日期格式化为“yyyy-MM-dd”,当 allDay 为假时将日期格式化为“yyyy-MM-dd HH:mm”。那可能吗?
java - 杰克逊 + 建设者模式?
我希望杰克逊使用以下构造函数反序列化一个类:
反序列化第一个参数很容易。问题是地址被定义为:
并且是这样构造的:new Address.Builder().setCity("foo").setCountry("bar").create();
有没有办法从杰克逊那里获取键值对以便自己构建地址?或者,有没有办法让杰克逊使用 Builder 类本身?