我正在尝试从我的网站解析json。
JSON: https://www.yemeklerimiz.com/?json=get_category_posts&id=6
json中有2个数组。我无法解析posts
数组,因为在出现category
数组之前。
我的排球:
public void getPosts() {
String url = Constant.baseUrl+"?json=get_category_posts&id="+getIntent().getStringExtra("CAT_ID");
StringRequest request = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray datas = jsonObject.getJSONArray("0");
for (int i = 0; i < datas.length(); i++) {
PostsModel postsModel = new PostsModel();
JSONObject jo = datas.getJSONObject(i);
String id = jo.getString("id");
String url = jo.getString("url");
String title = jo.getString("title");
Log.d("IMAGEUR", url);
postsModel.setID(id);
postsModel.setImageURL(url);
postsModel.setTitle(title);
postsModelArrayList.add(postsModel);
postsAdapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
requestQueue.add(request);
}
这不起作用。我该怎么做才能获得posts
数组中的JSONObject?
答案 0 :(得分:0)
使用JSON工具(例如GSON或LoganSquare,...)非常简单。您必须首先创建一个带有注释的字段的模型,然后创建一个构建器,最后将您的原始JSON字符串转换为模型,
您可以在this link中看到一个示例;
我建议改用Volley,因为它比Volley非常简单和快捷
答案 1 :(得分:0)
虽然我同意saeedata的回答,但我想向您解释如何使此代码在当前状态下运行而无需翻新。我认为它将更好地帮助您了解JSON的工作原理。
所以您在这里是: 响应的主要JSON对象,我们可以将其视为根。 在此“响应” JSON对象中,您具有诸如“ count”和“ pages”之类的字段,还有另一个名为“ posts”的JSON数组。此“帖子”字段本身包含其他各种JSON对象。
下面的代码片段显示了如何检索posts对象和其中的字段。
JSONObject responseJSON = new JSONObject(response);
// Retrieve the posts JSON array from the response
JSONArray postsArray = jsonObject.getJSONArray("posts");
for (int i = 0; i < datas.length(); i++) { //loop to iterate in JSON array
//retrieve the single postObject in array
JSONObject postObject = postsArray.getJSONObject(i);
//get fields from the postObject
String id = postObject.getString("id");
String url = postObject.getString("url");
String title = postObject.getString("title");
Log.d("Title for " + i.toString(), title);
}
输出如下:
0的标题:UnsuzŞekersiz芝士蛋糕
1标题:HurmalıŞekersizBrowni
2标题:KırmızıMeyveli Pratik芝士蛋糕
3名:Tropikal Blondie
4的标题:PalmsizŞekersizÇikolatalıMuzlu Kek
5位标题:星巴克HavuçluKek
6的标题:ÇikolatalıDondurma
标题7:莎莉·赫尔瓦斯