如何在 android 中解析来自 url 或 restful 服务的大量 JSON 数据?没有 GSON

Posted

技术标签:

【中文标题】如何在 android 中解析来自 url 或 restful 服务的大量 JSON 数据?没有 GSON【英文标题】:how to parse huge JSON data froma url or restful service in android?without GSON 【发布时间】:2013-12-11 10:08:13 【问题描述】:

我有一个 Rest ful 服务,.. 我得到一个 JSON 数据,比如,..


"returnCode": "success",
"RecievedData": 
"results": [
  
    "details": [
      
        "moredetails": [
          "id": "123456",
          "price": "129.99",
          "recorded_at": 3223322,
          "lastrecorded_at": 0002020,
          "seller": "google",
          "availability": "Available",
          "currency": "USD"
        ],
        "offers_count": 1,
        "name": "google.com",
        "recentoffers_count": 1,
        "sid": "988008555566649",
        "url": "http://google.com"
      ,
      "moredetails"
                .
                .

               
      ] details
          
          
          [
           ]
          
    "model": "abc",
    "weight": "127",
    "price_currency": "USD",
    "features": 
      .
      '
      
     "model": "abc",
    "weight": "127",
    "price_currency": "USD",
    .
    .
    .

我正在为此使用this 示例或教程

它的调用 json 来自 this url

他正在用这个 json 对象 jsonarray = jsonobject.getJSONArray("worldpopulation"); 解析数据

所以我从上面的 url 获取数据如何解析这么多 json 数据,因为我只想要 json 数组的 2 或 3 个字段。

请帮忙,.. 举个有效的例子,..for above,..

【问题讨论】:

你解析json的代码在哪里? 只是好奇...为什么没有 GSON? 嗨,Raghunandan 先生.. 我给了一些网址,请通过它,.. 我现在不知道如何在这个例子中解析上面的 json developer-android-tutorial.blogspot.in/2013/07/… 你好,先生在这个例子中developer-android-tutorial.blogspot.in/2013/07/… 他没有使用任何类型的库,比如 GSON,.. 只是解析数据,......我已经准备好了基于上述示例的代码,所以我没有想要任何更改,我只想解析表单 url,.. 谢谢 Perroloco 先生,.. 这可能会有所帮助***.com/a/20513759/2389078 【参考方案1】:

您可以使用 gson 库。有一个例子 here!

【讨论】:

【参考方案2】:

因为它是嵌套的 json 并且你没有指定你需要哪些字段所以很难回答 将此类用作您需要显示数据的参考类使用方法, 它将返回数组的第一个对象。

公共类解析器

    public String getData() 
        String content = null;

        String result = "";
        InputStream is = null;

        // http get
        try 
            HttpClient httpclient = new DefaultHttpClient();

            String webUrl = "your url";

            HttpGet httppost = new HttpGet(webUrl);
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();

            is = entity.getContent();

         catch (Exception e) 
            Log.d("LOGTAG", "Error in http connection " + e.toString());
        

        // convert response to string
        try 
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) 
                sb.append(line + "\n");
            
            is.close();
            result = sb.toString();
            Log.d("LOGTAG", "Result :" + result);
         catch (Exception e) 
            Log.d("LOGTAG", "Error converting result " + e.toString());
        

        // parse json data

        try 

            JSONArray jarray = new JSONArray(result);
            JSONObject jobj = jarray.getJSONObject(jarray.getInt(0));
            content = jobj.getString("key");//key=name of the field you require
         catch (Exception e) 

            Log.d("LOGTAG", e.toString());

        
        return content;
    

【讨论】:

【参考方案3】:

我看到了您的评论...您不想更改代码。但是与使用 Gson 相比,自己解析 json 非常慢。而且 gson 的使用非常简单,您只需要创建简单的 pojo 类,它将整个 json 转换为您可以在任何地方使用的 java 对象。这也是一种巧妙的做法。here is an example

【讨论】:

以上是关于如何在 android 中解析来自 url 或 restful 服务的大量 JSON 数据?没有 GSON的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中调用localhost的webservice(来自wamp或xampp服务器)?

如何在 Swift 3 中解析来自 URL 的 JSON 数据

Android - 使用 JSOUP 解析 JS 生成的 url

如何在 android 中使用改造来解析这个 web 服务?

如何从android中的url解析xml?

无法在android的videoview中播放来自url的视频如何在videoview中播放来自URL的视频?