Json解析在android中很慢

时间:2013-07-24 09:34:36

标签: android json facebook-graph-api android-asynctask

在我的应用程序中,我试图从Facebook获取最喜欢的音乐,电影,朋友的书籍。 到目前为止我做到了。

  1. 我要求facebook收藏,并以json的身份收到回复。
  2. 现在我想在后台解析它。
  3. 我的问题是解析执行速度非常慢。我正在使用for循环进行迭代。整个解析需要8到10秒。所以有任何方法可以更快地完成。

    public ArrayList<String> parsing()
    {
           long time1=System.currentTimeMillis();
          // System.out.println(time1);
           ArrayList<String> urls=new ArrayList<String>();
    
    
           int position=0;
        try {       
         String response=Utility.responseSecond;
        JSONObject node1=new JSONObject(response);              
        JSONArray array1=node1.getJSONArray("data");
        int length=array1.length();
        for(int i=0;i<length;i++)
        {
            if(array1.getJSONObject(i).getString("id").equals(friendId.toString()))
            {
                position=i;
            }
        }
           JSONObject node2 = array1.getJSONObject(position);
    
              try{
    
                  if(node2.has("music"))
                  {
    
             JSONArray array2=node2.getJSONObject("music").getJSONArray("data");
                        JSONObject node4=array2.getJSONObject(0);
    
                        String name=node4.getString("name");
    
                        JSONObject node5=node4.getJSONObject("picture");
                        JSONObject node6=node5.getJSONObject("data");
                        String musicsurl=node6.getString("url");
    
    
    
    
                        urls.add(musicsurl);
    
                  }
    
    
                    }
              catch(JSONException e)
                {
                  e.printStackTrace();
                }
    
              try{
    
    
                  if(node2.has("movies"))
                  {
    
                      JSONArray array2=node2.getJSONObject("movies").getJSONArray("data");
                        JSONObject node4=array2.getJSONObject(0);
                        String name=node4.getString("name");
    
                        JSONObject node5=node4.getJSONObject("picture");
                        JSONObject node6=node5.getJSONObject("data");
                        String moviesurl=node6.getString("url");
                        urls.add(moviesurl);
    
                  }
    
                  }
                  catch(JSONException e)
                    {
                      e.printStackTrace();
                    }
    
              try{
    
                  if(node2.has("books"))
                  {
                  JSONArray array2=node2.getJSONObject("books").getJSONArray("data");
                    JSONObject node4=array2.getJSONObject(0);
                    String name=node4.getString("name");
    
                    JSONObject node5=node4.getJSONObject("picture");
                    JSONObject node6=node5.getJSONObject("data");
                    String bookurl=node6.getString("url");
                    urls.add(bookurl);
    
    
                  }
              }
                  catch(JSONException e)
                  {
                    e.printStackTrace();
                  }
    
              try{
                  if(node2.has("television"))
                  {
                  JSONArray array2=node2.getJSONObject("television").getJSONArray("data");
                    JSONObject node4=array2.getJSONObject(0);
                    String name=node4.getString("name");
    
                    JSONObject node5=node4.getJSONObject("picture");
                    JSONObject node6=node5.getJSONObject("data");
                    String televisionsurl=node6.getString("url");
    
                    urls.add(televisionsurl);
    
                  }
              }
                  catch(JSONException e)
                  {
                    e.printStackTrace();
                  }
    
            } catch (Exception e) {
                Log.i("JSONException", e.getMessage());
    
    
                }
        System.out.println("in parsing"+(System.currentTimeMillis()-time1));
    
        return urls;
    
    
       }
    

1 个答案:

答案 0 :(得分:2)

你自己不需要这样做,请检查一下: https://code.google.com/p/google-gson/

它易于使用且速度也很快。