问题标签 [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 投票
2 回答
5455 浏览

java - spring控制器json接收json列表

我确实在json下面发布了包含

在我的弹簧控制器中,我有

知道为什么我的 List childListObject 为 null 吗?

我的 pojo 如下所示

0 投票
5 回答
12082 浏览

java - 使用 Jackson 将 Java 对象序列化为 JSON 时抑制包装器对象

我有一个以 JSON 形式返回列表的 Web 服务。它使用 Jackson 将 Java POJO 列表映射到 JSON。问题是 JSON 表示在数组周围有一个包装器对象,我只想要数组。即,我得到这个:

当我真正想要的是:

我正在直接序列化 Java 列表;我没有用包装器对象包装列表并序列化包装器对象。似乎是 Jackson 正在添加 JavaScript 包装器对象。

我假设我可以在 POJO 上使用一些注释来抑制包装器对象,但我没有看到它。

解决方案的限制

我想在服务端解决这个问题,而不是在客户端剥离包装。客户端是一个 jQuery UI 小部件(自动完成小部件,并不重要),它需要一个简单的数组,我不想修改小部件本身。

我试过的

  • 我尝试用 Java POJO 数组替换 Java POJO 列表,结果是一样的。
  • 我试图@JsonTypeInfo(use = Id.NONE)认为这可能会抑制包装器,但事实并非如此。
0 投票
1 回答
3170 浏览

java - 具有反序列化列表对象的弹簧控制器

然后我确实迭代了每个对象列表,但是列表中的每个项目都是 LinkedHashMap 类型,不是应该是“EachObject”类型吗?

0 投票
3 回答
3320 浏览

java - 将 Jackson 配置为使用 @XmlRootElement 的 name 属性

我有一个使用 JAXB 注释的 java bean @XmlRootElement(name="beanName"):. 有没有办法配置jackson在反序列化时使用注释的name属性?@XmlRootElement

0 投票
12 回答
102739 浏览

java - 如何使用 Jackson 在对象中包含原始 JSON?

当使用杰克逊(反)序列化对象时,我试图在 Java 对象中包含原始 JSON。为了测试此功能,我编写了以下测试:

代码输出以下行:

JSON 正是我想要的样子。不幸的是,当尝试将 JSON 读回对象时,代码失败并出现异常。这是一个例外:

org.codehaus.jackson.map.JsonMappingException:无法从 [Source: java.io.StringReader@d70d7a; 的 START_OBJECT 令牌中反序列化 java.lang.String 的实例;行:1,列:13](通过参考链:com.tnal.prism.cobalt.gather.testing.Pojo["bar"])

为什么杰克逊在一个方向上运行得很好,但在另一个方向上却失败了?似乎它应该能够再次将自己的输出作为输入。我知道我正在尝试做的是非正统的(一般建议是为它创建一个bar具有名为的属性的内部对象A),但我根本不想与这个 JSON 交互。我的代码充当此代码的传递——我想接收此 JSON 并将其再次发送回而不触及任何东西,因为当 JSON 更改时,我不希望我的代码需要修改。

感谢您的建议。

编辑:使 Pojo 成为一个静态类,这导致了不同的错误。

0 投票
1 回答
10104 浏览

java - 日期对象的 Jersey + Jackson 反序列化失败

我正在使用 jersey 和 jackson 一起开发我的 REST API,并且在反序列化日期字符串时遇到问题。我在泽西岛注册了一个提供者类:

似乎泽西岛在启动过程中捡到了它:

它适用于序列化,但是当我尝试反序列化类似 的字符串时2010-01-25 00:00:00,出现映射错误:

似乎泽西岛仍在JacksonJsonProvider以某种方式处理反序列化。我不确定我做错了什么。我应该如何配置球衣内的杰克逊?谢谢!

0 投票
1 回答
6994 浏览

android - 使用 Jackson 将 JSON 对象反序列化为 POJO

我正在尝试通过 ObjectMapper 在 Android 项目中使用 Jackson。

我的POJO如下:

我已经编写了一个单元测试,看看我是否可以让杰克逊努力反序列化我的 JSON 对象。

我的实际 JSON 文件包含的信息比我在产品中设置的信息多得多,但我只想让它工作。使用较大的文件会导致创建产品,但它的所有值都设置为空。我认为这可能是因为那里的所有数据,所以我创建了另一个文件(foo.json),其中包含以下内容:

我也遇到了同样的问题。

0 投票
5 回答
30303 浏览

java - jackon JSON 库中的 ALLOW_UNQUOTED_FIELD_NAMES

我正在使用杰克逊库对 JSON 进行序列化/反序列化。我需要此 JSON 具有尽可能小的大小,因此我启用了功能 ALLOW_UNQUOTED_FIELD_NAMES 以消除所有引号。我知道去掉引号不是标准的 json,但是让 json 变小是项目的硬性要求。生成的 json 有效,但是当我尝试读取 json 值时,我遇到了一个异常:

org.codehaus.jackson.JsonParseException:意外字符('9'(代码 57)):期望有效的名称字符(用于未引用的名称)或双引号(用于引用的名称)在 [来源:java.io .StringReader@1347d75; 行:1,列:3]

当我读到这个 ​​json 时,上面的异常被抛出:

我的阅读方式是:

我用于读取和写入值的对象映射器是:

我在发送方和接收方项目中都使用 Jackson 1.6.3 版。此功能所需的版本是 1.2+,所以我想也许我没有使用这个版本,但我的接收器是一个 Spring 应用程序,我检查了安装在 libs 文件夹中的库是 1.6.3。

我可能做错了什么?也许此功能不能与地图一起使用。

我还有一个问题,到目前为止,我只是发送一个地图,其中键只是一个 uuid 值,而值是一个数字。如果我发送带有 ALLOW_UNQUOTED_FIELD_NAMES 功能的特殊字符的值,我会遇到什么问题吗?杰克逊会逃脱这个角色吗?

谢谢。

0 投票
1 回答
14572 浏览

java - 没有注释的杰克逊是否绝对需要二传手?

我正在使用 Jackson 1.6.4 和 Java JDK 6。

我不想使用 Jackson 注释;我想要没有设置器的不可变 Java 对象。

这两个要求似乎有冲突。

如果我添加私有设置器反序列化工作正常。

我试图不为我的不可变对象求助于私人二传手——我很固执。

我正在尝试自定义实现 VisibilityChecker 以允许任何字段访问。

但是,如果有人有一些建议或经验教训,他们可以分享,我将不胜感激。

更新:它正在工作。

构建器模式,私有构造器 - 一个 la Bloch “Effective Java”。

它需要设置反序列化配置和可见性,但现在可以开始了。

0 投票
11 回答
123004 浏览

java - Spring配置@ResponseBody JSON格式

想象一下,我在 Spring 3 @Controller 中有这个带注释的方法

但是我需要配置输出json格式,就像我在做的那样:

有没有办法配置这种行为?

我发现了几个相关的问题,但我不确定如何使它们适应我的具体情况:

  1. 带有responsebody的spring prefixjson
  2. 谁在 Spring MVC (@ResponseBody) 中设置响应内容类型

谢谢 !