Java JSON流解析在对象末尾崩溃
我正在努力进行JSON解析(使用Google的GSON库) 下面是我的最小代码示例:Java JSON流解析在对象末尾崩溃,java,json,gson,Java,Json,Gson,我正在努力进行JSON解析(使用Google的GSON库) 下面是我的最小代码示例: Gson gson = new Gson(); String line = "{\"method\":\"GET\",\"status\":\"200 - OK\"}"; AnalysisReport report = gson.fromJson(line, AnalysisReport.class); //this works JsonReader reader = new JsonReader(n
Gson gson = new Gson();
String line = "{\"method\":\"GET\",\"status\":\"200 - OK\"}";
AnalysisReport report = gson.fromJson(line, AnalysisReport.class); //this works
JsonReader reader = new JsonReader(new StringReader(line));
reader.setLenient(true); //accept malformed input
while (reader.hasNext()) {
report = gson.fromJson(reader, AnalysisReport.class); //this doesn't work
}
reader.close();
我得到以下例外:(字符串是36个字符长)
应为BEGIN\u对象,但在第1行第37列为END\u文档
我的ReportAnalysis类如下所示:
public class AnalysisReport {
@SerializedName("method")
private String method;
@SerializedName("status")
private String status;
AnalysisReport(){
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getStatus() {
return status;
}
}
我不明白为什么我的代码不起作用。我跟着那棵枫树从
==编辑===
reader.hasNext()
方法始终返回true
。它表明该方法不使用流中的任何令牌。但不知何故,仍然移动到流的末尾,无法读取对象
问题确实在于循环(facepalm)。这非常好:
JsonReader reader = new JsonReader(new StringReader(line));
reader.setLenient(true); //accept malformed input
report = gson.fromJson(reader, AnalysisReport.class);
谢谢我刚刚删除了循环,它工作得很好
String line = "{\"method\":\"GET\",\"status\":\"200 - OK\"}";
AnalysisReport report = new AnalysisReport();
Gson gson = new GsonBuilder().create();
JsonReader reader = new JsonReader(new StringReader(line));
reader.setLenient(true); //accept malformed input
report = gson.fromJson(line, AnalysisReport.class); //this doesn't work
reader.close();
System.out.println(report.toString());
我能够用Jackson Json库对字符串进行映射,没有错误