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

如何使用ObjectMapper加载JSON以映射到特定的类结构?

林炫明
2023-03-14

我可以使用Jackson ObjectMapper将JSON文件中的数据直接加载到我自己的数据结构中吗?我试图从一个JSON文件中加载一个对象映射,但不知道该怎么做。

例如,给定:

public class View{
    public String name;
    public String title;
    public String link;
}

我想在JSON文件中创建/加载视图映射。如果我的JSON是:

 {
    "login" : {
      "name" : "login",
      "title" : "Login Page",
      "link" : "login.jsp"
    },
    "logout" : {
      "name" : "logout",
      "title" : "Logout Page",
      "link" : "logout.jsp"
    }
 }

我希望能够将所有内容加载到地图中。

我尝试了以下方法,但没有成功。它只是将所有内容加载到地图中:

Map<String, View> views;
ObjectMapper mapper = new ObjectMapper();
views = mapper.readValue( viewFile.getInputStream(), Map.class );

我猜我的错误是告诉制图员把它当作地图来读。类,但不确定如何以其他方式指定它。

共有2个答案

潘嘉颖
2023-03-14

把你的班级定义为

public class View{
  public View() {
  }

  public Info getLogin() {
    return login;
  }

  public void setLogin(Info login) {
    this.login = login;
  }

  public Info getLogout() {
    return logout;
  }

  public void setLogout(Info logout) {
    this.logout = logout;
  }

  private Info login;
  private Info logout;
}


class Info{
  public Info() {
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getLink() {
    return link;
  }

  public void setLink(String link) {
    this.link = link;
  }

  public String getTitle() {
    return title;
  }

  public void setTitle(String title) {
    this.title = title;
  }

  private String name;
  private String link;
  private String title;
}

然后使用以下代码将json绑定到类

View v = new ObjectMapper().readValue(JSON_STRING, View.class);

这会将json绑定到类视图的一个对象。

束福
2023-03-14

这应该行得通:

Map<String, View> views = mapper.readValue( viewFile.getInputStream(), new TypeReference<Map<String, View>>() {});

本质上,通过使用Type引用的匿名意图作为参数,通用类型(View)不会被擦除,Jackson将使用它来干净地生成Map

 类似资料:
  • 问题内容: 我正在使用ObjectMapper(https://github.com/Hearst- DD/ObjectMapper )将JSON映射到Swift对象。 说我有这个JSON结构: 我有以下Swift对象: 如何使用JSON对象中的键区分映射和映射?非常感谢! 问题答案: 细节 Xcode 10.2.1(10E1001),Swift 5 json档案 ObjectMapper示例 检

  • 我有一个API,它以以下格式返回JSON: 我还有一个POJO类,它具有与JSON响应的键对应的字段,因为、和键在我的用例中不相关。 是否可以将JSON响应映射到我的JavaPOJO类,即只映射键内的值? 一种可能的方法是接受String响应,并使用setter方法将其映射到我的POJO。 有更好的办法吗。像这样的

  • 问题内容: 我们有一张有很多列的大桌子。移至MySQL Cluster后,由于以下原因无法创建表: 错误1118(42000):行大小太大。不包括BLOB在内的已使用表类型的最大行大小为14000。这包括存储开销,请查阅手册。您必须将某些列更改为TEXT或BLOB 举个例子: 这是用于存储配置参数的表。我在想,我们可以将一些列合并为一个列,并将其存储为JSON对象,然后将其转换为Java对象。 例

  • 我在部署一个使用部署系统注入的SPI实现的Quarkus应用程序时遇到了一个问题。 感兴趣的事情: null

  • 本文向大家介绍apache-spark 使用Gson将JSON映射到自定义类,包括了apache-spark 使用Gson将JSON映射到自定义类的使用技巧和注意事项,需要的朋友参考一下 示例 使用Gson,您可以读取JSON数据集并将其映射到自定义类MyClass。 由于Gson不可序列化,因此每个执行程序都需要自己的Gson对象。而且,MyClass必须可序列化才能在执行程序之间传递。 请注意

  • 问题内容: 我需要将obj 映射到一个类及其中的数组,并且它也应该具有所有子级数据。(也嵌套数组列表),我需要再次将更新的数据列表转换为 我的json字符串是 问题答案: 首先, 您需要创建要在其中映射JSON的类。 幸运的是,有一个网站,可以为你做它在这里 其次,您可以使用Google Gson库进行轻松映射 1.添加 依赖项 。 2.从您的对象到JSON。 3.从JSON到object。 有关