2

私のアプリでは、お気に入りの音楽、映画、友達の本を Facebook から取得しようとしています。ここで私はこれまでに行いました。

  1. Facebook にお気に入りをリクエストし、json として応答を取得しています。
  2. これをバックグラウンドで解析したいと思います。

私の問題は、解析の実行が非常に遅いことです.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;


   }
4

1 に答える 1

2

自分でこれを行う必要はありません。次の pls を確認してください: https://code.google.com/p/google-gson/

使いやすく、高速です。

于 2013-07-24T09:42:35.827 に答える