问题标签 [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 - spring控制器json接收json列表
我确实在json下面发布了包含
在我的弹簧控制器中,我有
知道为什么我的 List childListObject 为 null 吗?
我的 pojo 如下所示
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)
认为这可能会抑制包装器,但事实并非如此。
java - 具有反序列化列表对象的弹簧控制器
然后我确实迭代了每个对象列表,但是列表中的每个项目都是 LinkedHashMap 类型,不是应该是“EachObject”类型吗?
java - 将 Jackson 配置为使用 @XmlRootElement 的 name 属性
我有一个使用 JAXB 注释的 java bean @XmlRootElement(name="beanName")
:. 有没有办法配置jackson在反序列化时使用注释的name
属性?@XmlRootElement
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 成为一个静态类,这导致了不同的错误。
java - 日期对象的 Jersey + Jackson 反序列化失败
我正在使用 jersey 和 jackson 一起开发我的 REST API,并且在反序列化日期字符串时遇到问题。我在泽西岛注册了一个提供者类:
似乎泽西岛在启动过程中捡到了它:
它适用于序列化,但是当我尝试反序列化类似 的字符串时2010-01-25 00:00:00
,出现映射错误:
似乎泽西岛仍在JacksonJsonProvider
以某种方式处理反序列化。我不确定我做错了什么。我应该如何配置球衣内的杰克逊?谢谢!
android - 使用 Jackson 将 JSON 对象反序列化为 POJO
我正在尝试通过 ObjectMapper 在 Android 项目中使用 Jackson。
我的POJO如下:
我已经编写了一个单元测试,看看我是否可以让杰克逊努力反序列化我的 JSON 对象。
我的实际 JSON 文件包含的信息比我在产品中设置的信息多得多,但我只想让它工作。使用较大的文件会导致创建产品,但它的所有值都设置为空。我认为这可能是因为那里的所有数据,所以我创建了另一个文件(foo.json),其中包含以下内容:
我也遇到了同样的问题。
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 功能的特殊字符的值,我会遇到什么问题吗?杰克逊会逃脱这个角色吗?
谢谢。
java - 没有注释的杰克逊是否绝对需要二传手?
我正在使用 Jackson 1.6.4 和 Java JDK 6。
我不想使用 Jackson 注释;我想要没有设置器的不可变 Java 对象。
这两个要求似乎有冲突。
如果我添加私有设置器反序列化工作正常。
我试图不为我的不可变对象求助于私人二传手——我很固执。
我正在尝试自定义实现 VisibilityChecker 以允许任何字段访问。
但是,如果有人有一些建议或经验教训,他们可以分享,我将不胜感激。
更新:它正在工作。
构建器模式,私有构造器 - 一个 la Bloch “Effective Java”。
它需要设置反序列化配置和可见性,但现在可以开始了。
java - Spring配置@ResponseBody JSON格式
想象一下,我在 Spring 3 @Controller 中有这个带注释的方法
但是我需要配置输出json格式,就像我在做的那样:
有没有办法配置这种行为?
我发现了几个相关的问题,但我不确定如何使它们适应我的具体情况:
谢谢 !