3

URLからJSONを解析して、データを配列に追加しようとしています。GSONライブラリを使用しています。

私のJSONの形式は次のとおりです。

[
   {
      "img-src":"http://website.com/images/img1.png",
      "URL":"http://google.com"
   },
   {
      "img-src":"http://website.com/images/img2.jpg",
      "URL":"http://yahoo.com"
   }
]

上記のデータを別のスレッドで取得したいのですが、次のコードがあります。

public class Async extends AsyncTask<String, Integer, Object>{

        @Override
        protected String doInBackground(String... params) {



            return null;
        }


    }

「img-src」と「URL」の各値を取得するにはどうすればよいですか?

4

3 に答える 3

6

このメソッドを使用して、配列リスト内のデータをフェッチします

 public ArrayList<NewsItem> getNews(String url) {
    ArrayList<NewsItem> data = new ArrayList<NewsItem>();

    java.lang.reflect.Type arrayListType = new TypeToken<ArrayList<NewsItem>>(){}.getType();
    gson = new Gson();

    httpClient = WebServiceUtils.getHttpClient();
    try {
        HttpResponse response = httpClient.execute(new HttpGet(url));
        HttpEntity entity = response.getEntity();
        Reader reader = new InputStreamReader(entity.getContent());
        data = gson.fromJson(reader, arrayListType);
    } catch (Exception e) {
        Log.i("json array","While getting server response server generate error. ");
    }
    return data;
}

これは、ArrayList Typeクラス(ここではNewsItem)を宣言する方法です。

  import com.google.gson.annotations.SerializedName;
    public class NewsItem   {

@SerializedName("title")
public String title;

@SerializedName("content")
public String title_details;

@SerializedName("date")
public  String date;

@SerializedName("featured")
public String imgRawUrl; 


}

これがWebSErviceUtilクラスです。

public class WebServiceUtils {

 public static HttpClient getHttpClient(){
        HttpParams httpParameters = new BasicHttpParams();
        // Set the timeout in milliseconds until a connection is established.
        int timeoutConnection = 50000;
        HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
        // Set the default socket timeout (SO_TIMEOUT) 
        // in milliseconds which is the timeout for waiting for data.
        int timeoutSocket = 50000;
        HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);           
        HttpClient httpclient = new DefaultHttpClient(httpParameters);          
        return httpclient;
     }

}
于 2012-07-09T13:47:55.253 に答える
0

それが私が使用するコードです(私にとってはうまく機能しています)。

//Initialize the list
Type listType = new TypeToken<ArrayList<YourObject>>(){}.getType();
//Parse
List<YourObject> List= new Gson().fromJson(response, listType);

YourObjectは次のようになります。

public class Category {
    private String URL;
    private String img-src;

    public Category(String URL, String img-src){
        this.URL= URL;
        this.img-src= img-src;
    }
}

よろしく。

追伸:これで「YourObject」のリストが得られます。次に、1つをURLでリストし、もう1つをimg-srcでリストするように作成できます。

于 2012-07-09T13:35:27.463 に答える
0

このユーザーガイドには、多くの例があります。

https://sites.google.com/site/gson/gson-user-guide

于 2012-07-09T13:44:52.910 に答える