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

如何将JSON值数组转换为Java对象

公西繁
2023-03-14

我试图将下面的Json数组转换为特定的Java对象。

[
    {
        "Dummy": {
            "attr": "PRIMITIVE",
            "value": {
                "Initial": "M",
                "Name": "Potato"
            }
        }
    },
    {
        "Dummy": {
            "attr": "PRIMITIVE",
            "value": {
                "Initial": "A",
                "Name": "Potatoo1"
            }
        }
    }
]

编辑:更新了正确的JSON结构

下面是我目前使用的对象映射器:

     ObjectMapper mapper = new ObjectMapper();
        Dummy[] myObjects = mapper.readValue(resultStr, Dummy[].class);
    
public class Dummy{

    public String attr;
    public value val;
}

public class value {

    public String Initial;
    public String Name;
}

然而,我在尝试反序列化com时出错。fasterxml。杰克逊。数据绑定。exc.MismatchedInputException:无法反序列化com类型的值。实例演示。虚拟来自数组值

共有1个答案

田仲卿
2023-03-14

您的输入没有有效的JSON数据,请使用JSON格式化程序/验证程序进行检查(例如https://jsonformatter.curiousconcept.com)

我假设,您的数据的“正确”JSON如下所示:

[
    {
        "Dummy": {
            "attr": "PRIMITIVE",
            "value": {
                "Initial": "M",
                "Name": "Potato"
            }
        }
    },
    {
        "Dummy": {
            "attr": "PRIMITIVE",
            "value": {
                "Initial": "A",
                "Name": "Potatoo1"
            }
        }
    }
]

这个JSON可以像这样映射:

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;


public class OMTest {

    public void deserialize() throws JsonMappingException, JsonProcessingException {
        String json = "[{\"Dummy\": {\"attr\": \"PRIMITIVE\",\"value\": {\"Initial\": \"M\",\"Name\": \"Potato\"}}},{\"Dummy\": {\"attr\": \"PRIMITIVE\",\"value\": {\"Initial\": \"A\",    \"Name\": \"Potatoo1\"}}}]";

        ObjectMapper mapper = new ObjectMapper();
        YourClass[] myObjects = mapper.readValue(json, YourClass[].class);

        // do something...
        System.out.println(myObjects.length);
    }

    private static class YourClass {
        @JsonProperty("Dummy")
        public Dummy dummy;
    }

    private static class Dummy {
        public String attr;
        public Value value;
    }

    private static class Value {
        @JsonProperty("Initial")
        public String initial;
        @JsonProperty("Name")
        public String name;
    }
}
 类似资料:
  • 问题内容: 我需要将JSON对象字符串转换为JavaScript数组。 这是我的JSON对象: 我想拥有: 我该如何实现? 问题答案: var json_data = {“2013-01-21”:1,”2013-01-22”:7}; var result = [];

  • 问题内容: 我有一个API请求,返回以下内容: 我想在单击按钮后使用以下代码显示获取的电影标题: 我的问题是,我收到一条错误消息,提示我只能遍历数组,并且我的数据是对象。如何在打字稿中将Object转换为Array,并在表格中显示电影的标题? 问题答案: 没错,您的回复是一个带有字段的对象: 因此,您实际上只想迭代该字段: …甚至更简单:

  • 我有一个像下面这样的JSON,我想通过解析它来生成相应类的Java对象。问题是我不希望该对象中maxtime的值设置为{{Instant.MAX.toString ()}}, 但它应该是它的翻译值,这意味着它应该是100000000-12-31T23:59:59.9999999Z。有没有任何标准库来实现这个类似的要求,或者我必须为此编写一个定制的代码? 在最坏的情况下,我已经准备好用其他类型的文件

  • 问题内容: 我从服务器得到一个 json数组: 我想使用gson将上面的json数据转换为Java 对象。我尝试了以下方法: 首先,我创建了一个 Person.java 类: 然后,在服务类中,我执行了以下操作: 我收到异常 java.lang.ClassCastException:java.util.LinkedHashMap无法强制转换为Person 。如何摆脱我的问题?我只想将json数组转

  • 问题内容: 我的脚本向我返回了一个数组(JSON数组),如下所示: 我需要打印“ 键 / 对” 值,就像从“ 地图”中进行 打印一样,如下所示: 我收到的JSON格式是否可能与常规JSON格式不同? 我当前的代码基于 Selenium ,它使用 Java脚本 读取性能统计信息,如下所示: _JavaDoc中_的提到了以下情况: 如果脚本具有返回值(即,如果脚本包含return语句),则将执行以下步

  • 问题内容: 如果我在C#中有一个二维数组-如何将其转换为包含二维数组的JSON字符串? 例如。 在JSON对象中给出一个平面的一维数组。Microsoft文档指出: “多维数组被序列化为一维数组,应该将其用作平面数组。” 问题答案: 您可以使用锯齿状数组而不是二维数组,其定义如下: 然后,JavascriptSerializer会将其序列化为[[#,#,#,#],[#,#,#,#]等形式]