我如何解析JSON从Java HTT presponse? [英] How do I parse JSON from a Java HTTPResponse?

查看:140
本文介绍了我如何解析JSON从Java HTT presponse?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我刚刚作出了一个网络请求的Htt的presponse对象。响应是JSON格式,所以我需要解析它。我能做到这一点的荒谬复杂的方式,但它似乎是必须有一个更好的办法。

这真的是最好的,我可以做什么?

 的Htt presponse响应; //一些响应对象
    读者=新的BufferedReader(
        新的InputStreamReader(response.getEntity()的getContent(),UTF-8。));
    StringBuilder的建设者=新的StringBuilder();
    的char [] buf中=新的char [1000];
    int类型l = 0;
    而(升> = 0){
        builder.append(BUF,0,1);
        L = in.read(BUF);
    }
    JSONTokener tokener =新JSONTokener(builder.toString());
    JSONArray finalResult =新JSONArray(tokener);
 

我在Android上,如果说有什么区别。

解决方案

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

  1. 使用<一个href="http://java.sun.com/javase/6/docs/api/java/lang/StringBuilder.html"><$c$c>StringBuilder代替<一个href="http://java.sun.com/javase/6/docs/api/java/lang/StringBuffer.html"><$c$c>StringBuffer因为它的速度更快和弟弟。
  2. 使用<一个href="http://java.sun.com/javase/6/docs/api/java/io/BufferedReader.html#readLine%28%29"><$c$c>BufferedReader#readLine()阅读阅读它被烧焦烧焦它一行行吧。

 的Htt presponse响应; //一些响应对象
的BufferedReader读卡器=新的BufferedReader(新的InputStreamReader(response.getEntity()的getContent(),UTF-8));
StringBuilder的建设者=新的StringBuilder();
对(串线= NULL;!(行= reader.readLine())= NULL){
    builder.append(线).append(\ N);
}
JSONTokener tokener =新JSONTokener(builder.toString());
JSONArray finalResult =新JSONArray(tokener);
 

如果该JSON实际上是单行线,那么你也可以去除环和建设者。

 的Htt presponse响应; //一些响应对象
的BufferedReader读卡器=新的BufferedReader(新的InputStreamReader(response.getEntity()的getContent(),UTF-8));
JSON字符串= reader.readLine();
JSONTokener tokener =新JSONTokener(JSON);
JSONArray finalResult =新JSONArray(tokener);
 

I have an HttpResponse object for a web request I just made. The response is in the JSON format, so I need to parse it. I can do it in an absurdly complex way, but it seems like there must be a better way.

Is this really the best I can do?

    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 );

I'm on Android if that makes any difference.

解决方案

Two things which can be done more efficiently:

  1. Use StringBuilder instead of StringBuffer since it's the faster and younger brother.
  2. Use BufferedReader#readLine() to read it line by line instead of reading it char by char.


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);

If the JSON is actually a single line, then you can also remove the loop and builder.

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);

这篇关于我如何解析JSON从Java HTT presponse?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆