问题标签 [objectmapper]

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 投票
1 回答
1237 浏览

java - JsonMappingException:没有找到适合类型 [simple type, class com.fasterxml.jackson.databind.node.ObjectNode] 的构造函数

我已经阅读了 External ObjectJSONMappingException 和 Class的 JSONMappingException 但找不到ObjectNode类的解决方案。

通过阅读外部对象的 JSONMappingException, 我了解到您必须在映射器中注册对象,但我没有创建任何 ObjectMapper 类,因为我正在调用 Web 服务

我正在尝试调用ReportQueryData.java包含ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) 实例变量的 My POJO ( ) 的 Web 服务。

报告查询数据.java

现在我在请求中调用包含 ReportQueryData 的 Web 服务,我面临以下异常

0 投票
1 回答
319 浏览

swift - 使用 AlamofireObjectMapper 创建 func 返回一个对象

我即将使用 AlamofireObjectMapper 扩展来映射来自服务器的 JSON 响应并创建一个函数来返回对象

我写了这些代码func

Herer是我的Constanst.swift(包含DownloadComplete关闭)

我不知道为什么 funcdownloadPokemonDetails1给出错误un-expected Non-void return value in void function

我的Pokemon班级

0 投票
1 回答
1012 浏览

java - 配置对象映射器以用小写替换值

我有一个看起来像这样的类 Diff:

我想使用以下调用创建一个 json 节点:

如果我有这样的差异:

正在做:

将返回:

不过,我需要“操作”这个词只是“操作”。据说,有一种方法可以配置 ObjectMapper,当它读取“操作”时,它会将其转换为“操作”,但我不知道该怎么做。有人知道吗?

0 投票
1 回答
391 浏览

ios - 映射顶级 JSON 字符串数组对象映射器

如何 mpa 顶级 JSON 字符串数组

来自服务器的 JSON 响应

我正在使用ObjectMapper Swift

0 投票
1 回答
104 浏览

json - 使用 ObjectMapper 的不同类型 JSON 文件

我正在使用 AlamofireObjectMapper 与后端服务器通信。其中一个请求的结果是一个项目数组,其中包含两个值:

  • 指示第二个值(“arbitraryData”)属于哪种类型的数据的“typeIdentifier”
  • 一个“任意数据”:
    • 如果“typeIdentifier”包含“X”,则任意数据的类型为 ArbitraryDataTypeX
    • 如果“typeIdentifier”包含“Y”,则任意数据的类型为 ArbitraryDataTypeY

这两个 ArbitraryDataType 类不共享任何共同的祖先(Mappable 除外)。它甚至可以是原始类型、数组、可选等。

如何让 AlamofireObjectMapper 使用适当的类型解析“arbitraryData”字段。

请参阅以下 JSON 文件:

我对应的 Swing 文件如下所示:

背景信息:我正在使用 AlamofireObjectMapper 与后端服务器进行通信。其中一个请求的结果是一个 Item 数组。typeIdentifier-mechanism(实际上它有点复杂,但让我们忽略它)由后端提供并且无法更改。

0 投票
1 回答
3056 浏览

java - Spring Integration Java DSL — 如何配置 JSON 转换器以获取 Spring boot 的全局设置?

我正在使用集成流来调用 RESTful Web 服务,如下所示:

事实上,上面的代码完美运行。正如我从文档中了解到的,Spring 集成的 http outbound-gateway 使用 RestTemplate 的实例将 Http 响应正文转换为 s 数组ItemDTO

现在让我们考虑以下代码:

在这种情况下,Http 响应体被转换成一个字符串,它被传递给一个转换器(例如在我的实际项目中,我使用JOLT从一个警报文档转换为一个 HAL——JSON 资源表示)。然后,我实例化一个转换器来处理 JSON 到 java 对象的映射。令人惊讶的是,上面的代码失败了(例如,在我的项目中,转换器抛出 a UnrecognizedPropertyException)。

失败的原因似乎是transformer使用的Object mapper没有和RestTemplate一样配置。我想知道为什么转换器不使用与 RestTemplate 实例相同的 ObjectMapper,或者至少为什么它们不使用相同的配置(即 Spring boot 的全局配置)。无论如何,有没有配置 ObjectMapper 供转换器使用?

更新

我发现了如何配置变压器的对象映射器。

首先,我们创建并配置Jackson的ObjectMapper的一个实例,如下:

然后,我们按如下方式实例化转换器(替换上面代码中的相应行):

我还是觉得transformer使用的ObjectMapper应该采用Spring boot的全局配置。

0 投票
2 回答
33518 浏览

java - 即使使用 NON_NULL,Jackson ObjectMapper 也会抛出 NullPointerException

当使用以下 JSON 并且“电话”或“电子邮件地址”为空时,我会收到 NullPointerException。

JSON:

这是堆栈跟踪:

我正在像这样设置我的自定义 ObjectMapper:

这意味着CteUserContext cteUserContext = MigrationObjectMapper.getMigrationObjectMapper().convertValue(item.getItem(), new TypeReference<CteUserContext>(){});抛出错误。

CteUserContext 内部是一个 User 对象,它包含 List 和 List。这些不应该根据对象映射器配置进行序列化吗?

0 投票
1 回答
1367 浏览

arrays - Objectmapper 获取 JSON 中一项的数组

所以我有以下 JSON,我将它与 ObjectMapper 和 Realm 一起使用。

我的问题是从“类型”中获取数据,对于数组中的某些项目,它表示“现在”或“稍后”,而对于其他项目是空的(因此,没有给出类型项目)。

我尝试在我的映射中执行以下操作:

当我检查 Realm 数据库时,您可以看到 typez,一个 [getType] 数组已生成,但它对于所有项目都是空的(即使是类型为“现在”的项目)。其他两项(id 和 url)填写在数据库中。

我做错了什么,它不会保存到数据库中?

0 投票
0 回答
99 浏览

java - 翻译json根元素jackson?

我正在使用 jackson 1.9 并使用它的ObjectMapper类来序列化和反序列化我的内容。因此,我使用了PropertyNamingStrategy,它在序列化过程中以特定形式转换我的所有键,并在反序列化过程中反向回溯。

然而,这导致给我 json 之类的:

对象映射器:---> JSON 字符串:

所以 myNamingStrategy不适用于 json 根元素。它的名称在序列化期间不会转换为短名称。

如何也为我的根元素应用类似的序列化和反序列化策略?

0 投票
0 回答
1256 浏览

java - UNWRAP_ROOT_VALUE 不工作杰克逊?

我向服务器发送一个 HTTP 请求,内容为 JSON 格式,如下所示。

客户

这会将我的内容转换为 JSON 并添加根元素。我使用命名策略将我的属性名称转换为一种形式,并类似地用于AnnottaionIntrospector将 rootName 转换为相同的形式。

Annotation 中的根元素AE被转换为aeinside AnnotationIntrospector,类似地使用PropertyNamingStrategy.

服务器

服务器上接收到的资源是LinkedHasMap客户端发送的 JSON。

可以看到修改后的根名称存在。

但是,objectMapper.convertValue(resource, AE.class);没有将其AE正确转换为 POJO 并给出错误:

我已经申请UNWRAP_ROOT_VALUE了,但它仍然给出错误。我想UNWRAP_ROOT_VALUE只适用于 Json 字符串?

如果从客户那里我不包装根值并发送 json 之类的,

没有根元素,我可以成功地将资源转换为 POJO(使用objectMapper.convertValue(resource, AE.class))。

但是打包后就不行了。对此有什么建议吗??