【发布时间】:2021-08-20 16:31:23
【问题描述】:
我有不同对象的列表
List<Object> people = new ArrayList<>();
people.add(new Worker("John", "Bep", "Farmer", 2500));
people.add(new Teacher("Jacob", "Hiu", 2, "Biology"));
people.add(new PoliceMan("Zoe", "Clain", 35, 2800));
我需要从该列表中创建 .json 文件。然后我需要打印这个文件,其中包含对象类的所有属性和名称,如下所示:
Worker: name:John, surname:Bep, work:Farmer,salary:2500
我已经这样做了:
public String listToJson() throws JsonProcessingException {
List<Object> people = new ArrayList<>();
people.add(new Worker("John", "Bep", "Farmer", 2500));
people.add(new Teacher("Jacob", "Hiu", 2, "Biology"));
people.add(new PoliceMan("Zoe", "Clain", 35, 2800));
String s = objectMapper.writeValueAsString(people);
return s;
}
public void jsonToList() throws IOException {
String s = listToJson();
TypeReference<List<Object>> mapType = new TypeReference<List<Object>>() {};
List<Object>jsonToOList= objectMapper.readValue(s,mapType);
jsonToOList.forEach(System.out::println);
}
我也继承了List<Person> people,但它返回了相同的结果。
现在的输出是:{name:John, surname:Bep, work:Farmer,salary:2500} 没有worker
【问题讨论】:
-
您在使用 Object 类时正在擦除类型...您需要
JsonTypeInfo注释。类似问题 - stackoverflow.com/questions/30362446/… -
你需要告诉杰克逊包含类名,如下所示:stackoverflow.com/questions/57725183/…