当前位置: 首页 > 知识库问答 >
问题:

使用Jackson databind将对象序列化为映射而不是字符串?

贡建修
2023-03-14

通常,当您要将对象序列化为JSON字符串时,会执行以下操作:

String json = objectMapper.writeValueAsString(myObject);

我想知道是否可以将对象直接序列化为java.util.Map而不是字符串?即类似这样的东西(伪代码):

String json = objectMapper.writeValueAs(myObject, new TypeReference<Map<String,Object>>() {});

我知道我可以先将对象序列化为String,然后将其反序列化为Map

我用的是杰克逊2.11.1。


共有1个答案

谭越
2023-03-14

您可以使用ObjectMapper的transtValue方法将Object转换为Map

Map<String, Object> map = objectMapper.convertValue(myObject, Map.class);
 类似资料:
  • 我有一个有内部地图的POJO。我想将它从JSON反序列化为HashMap,但Jackson将JSON的内部映射反序列化为LinkedHashMap。我可以通过将映射的类型从“Map”更改为“HashMap”来强制它使用HashMap,但我想知道是否有方法告诉Jackson将反序列化为Map的特定实现? 这里是JSON: 和转换类: 如何使用ObjectMapper:

  • 问题内容: 我有这个JavaScript原型: 然后创建一个新对象: 如果我做: 结果是: 但我需要将对象的类型包含在JSON字符串中,如下所示: 有没有使用框架之类的方法来执行此操作的快速方法?还是我需要在类中实现一个方法并手动执行? 问题答案: 编辑: 将字符串化 所有类的 “属性”。如果只想保留其中一些,则可以这样分别指定:

  • 我想序列化一个对象栏,它包含基元类型和一个HashMap。 我做错了什么? 打印foo...

  • 问题内容: 我能够将一个对象序列化为一个文件,然后再次还原它,如下面的代码片段所示。我想将对象序列化为字符串并存储到数据库中。谁能帮我? 问题答案: 你应该使用BLOB。使用JDBC非常简单。 你发布的第二个代码的问题是编码。你还应该对字节进行编码,以确保它们均不会失败。 如果你仍然想将其记录为字符串,则可以使用java.util.Base64对字节进行编码。 仍然应该将CLOB用作数据类型,因为

  • 问题内容: 如何将上述字符串反序列化为java对象。 我正在使用的类是 问题答案: @基达 我假设您可以控制JSON输入字符串的创建方式。我认为JSON字符串格式不正确,无法对地图类型进行默认的GSON反序列化。 我已经修改了输入字符串供您考虑,这将导致非null的LocalLocationId 如果我对输入字符串的假设不正确,请发表评论。 编辑1:由于无法修改输入,请考虑编写自定义解串器。以下是

  • 问题内容: 我有一些具有各种属性的JSON,其中大多数是简单数据类型。但是,我在JSON中有一个属性,当我将其反序列化为C#类时,我只需要将其反序列化为字符串即可。 JSON示例: 除了将是有效的JSON对象外,“ json”对象没有任何设置结构。 因此,在上面的示例中,“ json”的值是一个JSON对象-但是当它反序列化时,我需要将它作为字符串。 因此,如果我的C#类是: 然后,如果我使用: