VolleyでJSONArrayGETリクエストを送信すると、指定されたJSON配列が返されます。これが私のリクエストです:
JsonArrayRequest getRequest = new JsonArrayRequest(url,
new Response.Listener<JSONArray>()
{
@Override public void onResponse(JSONArray response) {
Log.d("Response", response.toString());
}
},
new Response.ErrorListener()
{
@Override public void onErrorResponse(VolleyError error) {
Log.d("Error.Response", error.toString());
}
}
);
VolleySingleton.getInstance(this).addToRequestQueue(getRequest); //Call to get dashboard feed
}
ご覧のとおり、現在、応答をログアウトしています。ただし、配列を解析して、結果をリストビューに表示したいと思います。これに関するドキュメントは素晴らしいものではなく、Androiddev。VolleyからJSON配列を解析し、結果をリストビューに表示する適切な方法は何ですか? ? 収集しましたparseNetworkResponse
を使用する必要がありますが、実装方法がわかりません。
JSON解析にはGSONライブラリに固執することをお勧めします。次に、JSON処理が埋め込まれたVolleyリクエストがどのように見えるかを示します。
import Java.io.UnsupportedEncodingException;
import com.Android.volley.NetworkResponse;
import com.Android.volley.ParseError;
import com.Android.volley.Request;
import com.Android.volley.Response;
import com.Android.volley.Response.ErrorListener;
import com.Android.volley.Response.Listener;
import com.Android.volley.toolbox.HttpHeaderParser;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
/**
* Volley GET request which parses JSON server response into Java object.
*/
public class GsonRequest<T> extends Request<T> {
/** JSON parsing engine */
protected final Gson gson;
/** class of type of response */
protected final Class<T> clazz;
/** result listener */
private final Listener<T> listener;
public GsonRequest(String url, Class<T> clazz, Listener<T> listener,
ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.clazz = clazz;
this.listener = listener;
this.gson = new Gson();
}
@Override
protected void deliverResponse(T response) {
listener.onResponse(response);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(
response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(
gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
}
http://example.com/api/persons/ にサーバーメソッドがあり、PersonのJSON配列を返すとします。人は次のとおりです。
public class Person {
String firstName;
String lastName;
}
上記のメソッドは次のように呼び出すことができます。
GsonRequest<Person[]> getPersons =
new GsonRequest<Person[]>("http://example.com/api/persons/", Person[].class,
new Listener<Person[]>() {
@Override
public void onResponse(Person[] response) {
List<Person> persons = Arrays.asList(response);
// TODO deal with persons
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO deal with error
}
});
VolleyQueue.get().add(getPersons);
そして最後に、応答リスナーで、リストに変換してListViewのアダプターに供給することができるPersonの配列を取得します。
Gson プロジェクトを使用してJava and Android appで、jsonを操作できます。このリンクはサンプルリンクです。 gsonを使用する