Java JSON流解析在对象末尾崩溃

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

我正在努力进行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(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库对字符串进行映射,没有错误