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

如何使用Jackson反序列化JSON到Map对象?

邵飞鸿
2023-03-14

我有一个JSON,它带有一个包含任意键和值类型的标记,我想将其读入Java中POJO内的映射。映射将是指向JsonValue或JsonNode之类的字符串。我正在使用对象映射器解析json。

有人对如何设置我的POJO来与杰克逊一起完成这一任务有什么建议吗?还是一种更好的方式?

Json示例:

{
    "thing": "name",
    "params": {
        "foo": 45.5,
        "key": "value"
    }
}

映射方法:

ObjectMapper objectMapper = new ObjectMapper();
MyClasst = objectMapper.readValue(json, MyClass.class);

我的POJO:

public class MyClass {
    private String thing;
    private Map<String, SOMETHING> params;

    public String getThing(){
        return thing;
    }

    public void setThing(String thing) {
        this.thing = thing;
    }

    public Map<String, SOMETHING> getParams(){
        return params;
    }

    public void setParams(Map<String, SOMETHING> params) {
        this.params = params;
    }
}

共有1个答案

柳坚白
2023-03-14

假设您的密钥始终是以下 JSON 的字符串类型,

"params": {
        "foo": 45.5,
        "key": "value"
    }

您应该将映射值用作Object,因为值可以是StringDouble

private Map<String, Object> params;

 类似资料:
  • 我目前正在开发一个Java web应用程序,它使用Magento REST API公开的JSON数据。api返回的数据示例如下: 我的应用程序中有一个Java类,如下所示: 我想对数据进行反序列化,并将其转换为,但我总是得到以下错误: 这是我用来将JSON响应反序列化为ArrayList的语句行: 有人能分享一些见解吗?我看到一些例子,返回的JSON对象前面没有任何ID。那是因为我做错了什么吗?非

  • 我有一个类,它可以很好地序列化和反序列化: 我还有一个< code>PacketResponse对象,类似于: 对象的序列化工作正常,结果如下: 然而,当我试图将这个JSON反序列化回一个< code>PacketResponse对象时,使用 我得到一个。 似乎它正在尝试反序列化 ,但由于它没有直接执行此操作,杰克逊看不到 注释,而是正在寻找 字段(因为这是构建器方法的名称)。 有人能帮我找出反序

  • 如何用jackson(Java)反序列化Object中的json对象(在我的例子中,字段中提供对象)? 输入字符串: {“header”:“OFFER”,“message”:“{”author\“:\”Peter Smith\“,\”previous\“:null,\”current\“:{”id\“:\”eOUQieQdvB\“,”authorUserId\“:\”foo\“}” {“autho

  • 假设您有一个JSON,它看起来像这样: 使用Scala和类型来表示这一点似乎很自然: 我的问题是:是否可以使用Jackson的Scala模块将上面的JSON序列化为一个? 我的尝试: 例外情况: 线程“main”com.fasterxml.jackson.databind.JsonMappingExctive中的异常:无法构造...项目的实例,问题:抽象类型需要映射到具体类型,具有自定义反序列化器

  • 我收到来自第3方服务提供商的JSON响应,其中包含一系列对象。当我尝试使用Jackson api反序列化JSON时。我收到以下异常 我的回答是 我的POJO课是这样的 我正在尝试使用以下代码反序列化JSON 如果我试着去做 它在BEGIN_对象本身失败。 如何使用数组读取和反序列化JSON。我应该编写自己的反序列化器吗? 编辑如果我使用JSON字符串而不是流,那么我就能够取回所有Java对象。但为

  • 我需要一个自定义反序列化器来在复杂的POJO中转换字符串。反序列化工作直到使用反序列化器:特别是使用自定义反序列化器时,我的对象的非对象属性不会序列化。 我有一个restful Web服务,它有一个pojo作为参数。 所以我的类PreentivoWs需要一个方法。这里是类定义: 在jsonObject中,我有一个枚举定义为 但此对象需要转换反序列化程序: 并在财产上标注: fromString方法