【发布时间】:2019-01-20 04:49:09
【问题描述】:
在我拥有的 json 链接中,它包含名为 products 的属性,它是一个包含多个对象的数组。如何读取该属性 products 并遍历其中的每个元素?例如如何获取 id、color 和 price 的值?我尝试了以下,但似乎这条线
Response.Listener<JSONObject> onPostsLoaded
不接受 JSONObject 作为类型
请告诉我如何使用 volley 读取 json 对象
private void initGson() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setDateFormat("M/d/yy hh:mm a");
gson = gsonBuilder.create();
}
private void doRetrofit() {
API_BASE_URL = this.getResources().getString(R.string.BASE_URL);
requestQueue = Volley.newRequestQueue(this);
fetchPosts();
}
private void fetchPosts() {
StringRequest request = new StringRequest(Request.Method.GET, API_BASE_URL, onPostsLoaded, onPostsError);
requestQueue.add(request);
}
private final Response.Listener<JSONObject> onPostsLoaded = new Response.Listener<JSONObject>() {
@Override
public void onResponse(String response) {
Log.i(TAG, response);
response.getJs
//List<Repo> repos = Arrays.asList(gson.fromJson(response, Repo[].class));
/*Log.i("PostActivity", repos.size() + " posts loaded.");
for (Repo repo : repos) {
//Log.i("PostActivity", repo.getImageUrl() + ": " + repo.getName());
}*/
}
};
private final Response.ErrorListener onPostsError = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, error.toString());
}
};
JSON:
products: [
{
name: "Yellow Triangle",
type: "Triangle",
id: 1,
color: "Yellow",
imageURL: "https://kredit.check24.de/konto-
kredit/ratenkredit/nativeapps/imgs/08.png",
colorCode: "FFECB3",
available: true,
releaseDate: 1460629605,
description: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam",
longDescription: "Lorem ipsum dolor sit amet, consetetur sadipscing
elitr, sed diam Lorem ipsum dolor sit amet, consetetur sadipscing
elitr, sed diam Lorem ipsum dolor sit amet, consetetur sadipscing
elitr, sed diam Lorem ipsum dolor sit amet, consetetur sadipscing
elitr, sed diam",
rating: 2.17,
price: {
value: 225.91,
currency: "EUR"
}
},
【问题讨论】:
-
你想要一个 JsonObjectRequest,而不是 StringRequest
-
如果您想使用 Gson,请参阅 developer.android.com/training/volley/…
-
@cricket_007 我是否也应该更改这一行 JsonObjectRequest request = new StringRequest(Request.Method.GET, API_BASE_URL, onPostsLoaded, onPostsError); ??
-
new JsonObjectRequest,不是 StringRequest
标签: android json gson android-volley