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

将对象列表转换为JSON文件并将其读回

别锐
2023-03-14

我有以下几门课:

public class Person {
    private String id;
    private String first_name;
    private String last_name;

    Person(String id, String first_name, String last_name) {
        this.id = id;
        this.last_name = last_name;
        this.first_name = first_name;
    }
}

我希望能够有一个具有JSON格式的文件,这样:

[
   {
      "id":"1",
      "first_name":"bob",
      "last_name":"marley"
   },
   {
      "id":"2",
      "first_name":"bob",
      "last_name":"ross"
   }
]

该文件是所有person对象的列表。所以我试图创建两种方法:

  1. 列表 转换为JSON文件的方法。
  2. 方法,该方法将JSON文件读入列表

在Java 8中实现这一点的最佳方式(最优雅的方式)是什么?我是否需要向Person添加一些方法?还是有别的办法?

既然它是一个只包含字符串的对象列表,那么有什么优雅的东西吗?

共有1个答案

夹谷成龙
2023-03-14

有多个不同的库可以用于此,但下面是一个使用jackson的简单示例:

public static void main(String[] args) throws IOException {
    Path path = Path.of("people.json");
    ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT)
            .setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)
            .registerModule(new ParanamerModule());
    List<Person> people = List.of(new Person("3213914912", "SomeFirstName", "SomeSecondName"));

    write(path, mapper, people);
    read(path, mapper).forEach(System.out::println);
}

private static void write(Path path, ObjectMapper mapper, List<Person> people) throws IOException {
    mapper.writeValue(path.toFile(), people);
}

private static List<Person> read(Path path, ObjectMapper mapper) throws IOException {
    return mapper.readValue(path.toFile(), TypeFactory.defaultInstance()
            .constructCollectionType(List.class, Person.class));
}
 类似资料:
  • 问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答

  • 问题内容: Json字符串: C#类: C#将json转换为电影的c#列表: 我的变量最终是一个计数为0的空列表。我是否缺少某些内容? 问题答案: 您的C#类映射与json结构不匹配。 解决方案:

  • 我有一个JSON对象,我正在将它转换成一个,并在这里进行一些处理。稍后,我想将相同的缓冲区数据转换为有效的JSON对象。 我的工作节点V6.9.1 下面是我尝试过的代码,但当我转换回JSON并且无法打开此对象时,我得到了。 所以我试着用检查的方式打印整个物体 如果我试着像数组一样读取它 我试图解析它也抛出SynTaxError:意外令牌o在JSON在位置2 我需要像我创建的那样将其视为真实对象(我

  • 问题内容: 如何加载YAML文件并将其转换为Python JSON对象? 我的YAML文件如下所示: 问题答案: 你可以使用PyYAML 并在ipython控制台中:

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

  • 我正试图将下面的json转换成java bean,需要你的帮助 Sort.json 我的豆子看起来像 我的测试课是 我看到的错误是 请建议: