当前位置: 首页 > 面试题库 >

如何从Java HTTPResponse解析JSON?

祁飞扬
2023-03-14
问题内容

我有一个用于刚刚发出的Web请求的HttpResponse对象。响应为JSON格式,因此我需要对其进行解析。我可以以一种荒谬的复杂方式来做到这一点,但是似乎必须有一种更好的方式。

这真的是我能做的最好的吗?

    HttpResponse response; // some response object
    Reader in = new BufferedReader(
        new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
    StringBuilder builder= new StringBuilder();
    char[] buf = new char[1000];
    int l = 0;
    while (l >= 0) {
        builder.append(buf, 0, l);
        l = in.read(buf);
    }
    JSONTokener tokener = new JSONTokener( builder.toString() );
    JSONArray finalResult = new JSONArray( tokener );

如果有任何不同,我在Android上。


问题答案:

可以更有效地完成两件事:

  1. 使用StringBuilder代替,StringBuffer因为它是更快和更小的兄弟。
  2. 用于BufferedReader#readLine()逐行读取,而不是逐字符读取。
HttpResponse response; // some response object
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
StringBuilder builder = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null;) {
    builder.append(line).append("\n");
}
JSONTokener tokener = new JSONTokener(builder.toString());
JSONArray finalResult = new JSONArray(tokener);

如果JSON实际上是一行,那么您还可以删除循环和构建器。

HttpResponse response; // some response object
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
String json = reader.readLine();
JSONTokener tokener = new JSONTokener(json);
JSONArray finalResult = new JSONArray(tokener);


 类似资料:
  • 问题内容: 我正在使用CURL发送请求。响应数据类型为。如何解析此数据并将其插入数据库? JSON输出: 问题答案: 如果您的变量是字符串json之类的,则必须使用function将其解析为 对象 或 数组 : 输出值 现在,您可以将变量作为数组使用: 参考文献: json_decode -PHP手册

  • 问题内容: 我试图从json字符串解析json数组,但它总是抛出异常。 如果我有任何错误,请告诉我。 谢谢。 这是我从服务器获取Json的代码: 这是解析JsonArray的代码: 这是我的json字符串: 问题答案: 嗨,@ Caerulius,Harish,ρяσsρєяK,Hot Licks等等。 最终,经过2天的头痛和2个不眠之夜,我解决了这个问题。而且由于您花了宝贵的时间与我讨论,因此我

  • 我有来自文件的JSON。 并希望解析解决方案和num的列表。 已用库org.json.simple.* 试试这个 我做错了什么? 如果尝试写入 如果尝试写入

  • 我正在处理wordpress主题,未能在wpdb上使用算术运算- 若我写的是simple,那个么它会在数据库中成功更新 但是如果我对结果使用减号操作,它会抛出致命的错误。 错误 朋友们,请建议我如何解决这个问题。我已经使用结果-

  • 例如,我有一个包含一些属性的Jenkinsfile 我想在groovy代码中解析上面的Jenkinsfile,以便访问一些属性值。 当我像这样使用GroovyShell时 我得到这个错误 我可能能够通过一些Groovy元编程绕过特定错误,但是,我不确定这是否是正确的方向。我的问题是,在Groovy代码中解析Jenkinsfile的最佳方法是什么?这就是Groovy DSL,我希望它更简单。

  • 问题内容: 我正在使用NewtonsoftJson库来解析json,但我不知道如何使用它。我使用JObject解析了字符串。当我在即时窗口中输出JObject实例的值时,我得到了:- 我应该怎么做才能获得这个工作的价值? 问题答案: 我个人更喜欢将JavaScriptSerializer与.NET环境中的JSON一起使用。默认情况下,它将返回Dictionary结果,但可用于解析到自定义对象(或者