【发布时间】:2017-04-16 00:44:09
【问题描述】:
您好,在查找我的 Json 解析器出了什么问题时遇到了一些麻烦。
你好有一个对象学生(ID,姓名,年级) 这就是我在我的文档中写我的学生的方式: 公共无效运行(){
System.out.println("Server get:" + value);
Gson gson = new Gson();
System.out.println("this record will be created in the source document");
String json = gson.toJson(value);
// System.out.println(json);
//2. Convert object to JSON string and save into a file directly
try (FileWriter writer = new FileWriter(File,true)) {
gson.toJson(value, writer);
writer.write("\n");
} catch (IOException e) {
e.printStackTrace();
}
}
在文件中我明白了 {"SID":"fd36ac24-4487-49aa-bdd0-40535b55d081","Name":"Marie","Major":"IT"}
这是一个很好的学生对象。现在我想再次将此文件信息放入学生对象中。这就是我尝试这样做的方式:
public Student Creation_Two() {
String fichier ="C:\\Users\\programming\\Personne_source.txt";
Student s1 = new Student();
Gson gson = new Gson();
System.out.println("we try to parse the document with json to the object");
JsonReader reader = new JsonReader(new StringReader(fichier));
reader.setLenient(true);
System.out.println("reader value "+reader);
try
{
s1 = gson.fromJson(reader, Student.class);
System.out.println(s1 +" s1 have been serialized");
return s1;
}
catch (IllegalStateException | JsonSyntaxException e1)
{
System.out.println("error in getting the object");
e1.printStackTrace();
}
return s1;
}
但这不起作用我有错误:预期 BEGIN_OBJECT 但在第 1 行第 2 列是 STRING。
这里是学生课
public class Student {
private static final long serialVersionUID = 1L;
private String SID;
private String Name;
private String Major;
public Student(String SID, String Name, String Major)
{
this.setSID(SID);
this.setName(Name);
this.setMajor(Major);
}
public Student() {
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Student SID= " + SID + ", Name= " + Name + ", Major= " + Major + "";
}
//all the get set
【问题讨论】:
-
你能粘贴 Student 类吗?
-
我现在编辑了问题以放置课程。
-
不要初始化
s1,也可以说Student s1 = gson.fromJson(reader, Student.class);,JsonReader reader = new JsonReader(new StringReader(fichier));你使用了错误的阅读器,读取的是字符串,你需要一个文件阅读器。 -
@thor 你试过我告诉你的选项了吗?
-
@cralfaro 是的,我对其进行了测试,但仍然是错误,我在旁边打印了控制台输出。但我认为我必须修改一些东西,因为我的文件中可以有随机数量的学生,我必须序列化只有 n 个学生
标签: java file serialization gson streamwriter