代码之家  ›  专栏  ›  技术社区  ›  anon

在Java和Android中解析客户端上JSON对象的最佳实践

  •  2
  • anon  · 技术社区  · 14 年前

    在我的Android客户机中,我想从服务器接收JSON对象。通过谷歌搜索,我发现了很多不同的可能性,如何最好地解析服务器中的输入流,但大多数都是自己编写的解析器。难道没有一个库可以为我解析这些内容吗?或者我应该如何最好地自己实现它?

    5 回复  |  直到 8 年前
        1
  •  -2
  •   L. Cornelius Dol    8 年前

    如Java 7,没有任何包 内置 这个 太阳 用于解析JSON的Oracle Java发行版;对于Android来说至少有 org.json 但显然有些开发人员不喜欢它。

    当然,有许多第三方选择。

    我有一个非常轻量级的JSON解析器,您可以使用它来解析HTTP内容流。它是完全免费的,使用风险自理等。详细信息并下载到我的 website . 它在Android虚拟机中应该可以正常工作。

        2
  •  9
  •   StaxMan    14 年前

    你在开玩笑吧?在Java平台上有十几个JSON解析器,而且大多数在Android上工作得很好(参见 http://json.org/ )最常用的两种选择是 Jackson Gson 并且两者都可以很好地工作,这样不仅可以解析和编写JSON,还可以将JSON数据直接绑定到pojos和pojos之间。

        3
  •  3
  •   Cheryl Simon    14 年前

    你可以使用内置的 JSONTokener . 该链接中有一个示例,演示了如何使用它。

    以字符串形式获取响应:

    InputStream stream = httpResponse.getEntity().getContent();
    BufferedReader br = new BufferedReader(new InputStreamReader(stream));
    StringBuilder sb = new StringBuilder();
    String line = null;
    
    while ((line = br.readLine()) != null) {
      sb.append(line + "\n");
    }
    
    br.close();
    String result = sb.toString();
    
        4
  •  2
  •   Ads    14 年前
     private static String convertStreamToString(InputStream is) {
    
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    
            StringBuilder sb = new StringBuilder();
    
            String line = null;
    
            try {
    
                while ((line = reader.readLine()) != null) {
    
                    sb.append(line);
    
                }
    
            } catch (IOException e) {
    
                e.printStackTrace();
    
            } finally {
    
                try {
    
                    is.close();
    
                } catch (IOException e) {
    
                    e.printStackTrace();
    
                }
    
            }
    
            return sb.toString();
    
        }
    

    您可以通过这段代码解析JSON的输入…希望这对你有用

        5
  •  0
  •   Buck Fury    14 年前

    SDK中的wiktionary示例将内容作为输入流获取,并将其转换为字符串,然后构造一个新的org.json.jsonObject(string)来解析结果。