如何在Java中使用jackson将对象读/写到JSON文件
我正在尝试使用如何在Java中使用jackson将对象读/写到JSON文件,java,json,jackson,Java,Json,Jackson,我正在尝试使用 public class Town implements Serializable{ private Person p; private String hello; private long number; } public class Person implements Serializable { private String firstName; private double legs; private Strin
public class Town implements Serializable{
private Person p;
private String hello;
private long number;
}
public class Person implements Serializable {
private String firstName;
private double legs;
private String lastName;
}
这样就产生了Json
ObjectMapper mapper = new ObjectMapper();
ObjectWriter writer = mapper.writer(new DefaultPrettyPrinter());
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true)));
writer.writeValue(out, townobj);
当我尝试使用
{
"p" : {
"firstName" : "John",
"amount" : 6860.0,
"lastName" : "Smith"
},
"hello" : "qwiejiowcqnio",
"number" : 1380.0
}
{
"p" : {
"firstName" : "Sam",
"amount" : 623460.0,
"lastName" : "Smith"
},
"hello" : "qwiej2342io",
"number" : 1330.0
}
列出myObjects;
myObjects=mapper.readValue(新文件(“test.json”)、新类型引用(){};
我得到以下错误:
无法反序列化java.util.ArrayList的实例,因为它不在START_对象标记中文件中的JSON不是有效数组,因此无法将其反序列化到
列表
。您需要将列表序列化为JSON,以便将其反序列化为列表:
writer.writeValue(out,Arrays.asList(townobj));
请查看此处的反序列化详细信息:您只编写了一个对象。因此,您应该只读取一个对象(而不是列表)。我有一个文本文件,其中充满了附加对象。我已经更新了代码。
List<Town> myObjects;
myObjects = mapper.readValue(new File("test.json"), new TypeReference<List<Town>>(){});