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

用ObjectMapper读取嵌套的json文件

辛意智
2023-03-14

我试图在ObjectMapper的帮助下读取一个json文件(schools.json)。json的文件结构如下所示:

[
  {
    "schoolid": "X",
    "schoolname": "ABC",
    "schoolbranch": "DEF",
  },
 {
    "schoolid": "Y",
    "schoolname": "GDF",
    "schoolbranch": "HJG",
  },
]

这个json文件是从java读取的,如下所示:

static final String fileName = "schools.json";

     InputStream iStream = getClass().getClassLoader().getResourceAsStream(fileName);
          schools = objectMapper.readValue(iStream,
                  objectMapper.getTypeFactory().constructCollectionType(List.class, School.class));
 [
      {
        "schoolid": "X",
        "schoolname": [{"original": "dfs"},{"translated":  "sfds"}],
        "schoolbranch":  [{"sub": "fdsf5"},{"major": "908fds"}],
      },
     {
        "schoolid": "Y",
        "schoolname": [{"original": "wera"},{"translated":  "sfds"}],
        "schoolbranch":  [{"sub": "mohk"},{"major": "908fds"}],
      },
 ]
public class School {
private int schoolid;
private SchoolName schoolname;
private SchoolBranch schoolbranch;
... 
// getters and setters here
}
public class SchoolName {
private String original;
private String translated;
// etc.
}

现在,上面的java代码块不工作了。schools对象返回NULL。

我不能让这个工作。我发现了一些json字段包含数组的例子,但我不能将类似的逻辑应用到我的例子中。感谢你的帮助。

共有1个答案

应向晨
2023-03-14

正如Smutje和Smile所说,您的json对象是列表,而不是单个对象。将java School对象更改为:

public class School {
private int schoolid;
private List<SchoolName> schoolname;
private List<SchoolBranch> schoolbranch;
... 
// getters and setters here
}
 类似资料:
  • 问题内容: 我有以下JSON,如下所示。我正在尝试读取值TOP1,TOP2。我不太确定该如何做。 我正在使用以下..但这只是给我一个对象,该对象具有用于TOP1和TOP2的嵌套对象。如何获取值TOP1和TOP2? 和下面的数据 问题答案: 您似乎想通过循环,因此请更改以下内容: 对此: 现在,您正在使用该对象遍历该对象数组, 这些 对象就是具有属性的对象,例如:和。

  • 我这里有一个很长的json:https://textup.fr/601885q4我想读一个“支付令牌合同”中的数据,特别是那些带有“id”的数据:1我的问题是,我不知道如何称呼特定的词汇,因为它们都有相同的名称。这是否可能,我还不习惯操作如此复杂的对象,因为我是初学者。我会尝试像:[“订单][x][“id”:1][“基本价格”]这样的东西,x是一个for循环,循环遍历每个“订单”显示。但是我无法将

  • 问题内容: 我很好奇如何使用熊猫读取以下结构的嵌套json: 这使数组保持为json。我宁愿将其扩展为列。 感谢您的第一个答案。我应该提一下我的问题:数组中嵌套属性的拼合不是强制性的。仅将[A,B,C]连接df.locations [‘name’]就可以了。 我的文件包含多个JSON对象(每行1个),我想保留number,date,name和location列。但是,我需要加入这些地点。 我在这里

  • 我是一个新的Java程序员,来自Python背景。我有天气数据被收集/返回为一个JSON嵌套键,我不明白如何在这种情况下拉出值。我肯定这个问题以前有人问过,但是我发誓我已经谷歌了很多,似乎找不到答案。现在我使用的是json-简单,但我尝试切换到Jackson,但仍然不知道如何做到这一点。由于Jackson/Gson似乎是最常用的库,我希望看到使用其中一个库的示例。下面是数据的示例,后面是我到目前为

  • 我的json结构如下: 表示JSON继续使用更多。我想从这个JSON中检索。我的代码如下所示: 但是,使用此代码,将始终 我尝试了不同的路径,但总是得到一个空的

  • 问题内容: 我是来自Python的新Java程序员。我有正在收集/返回为带有嵌套键的JSON的天气数据,而且我不了解在这种情况下如何提取值。我敢肯定这个问题已经被问过了,但是我发誓我已经用Google搜索了很多东西,但是我似乎找不到答案。现在我正在使用json- simple,但我尝试切换到Jackson,但仍然不知道如何执行此操作。由于Jackson / Gson似乎是使用最频繁的库,因此,我很