بحاول أحصل على قيمة String من ملف JSON
بس المشكله ان القيمة عباره عن:
Object > Array > String
و حاولت بأكتر من طريق بس الطريقه الاخيره حاسس ان ناقص فيها حاجه بسيطه او فى جزء مش عامله صح, الكود مرفق, و ارجو منكم توضيح اين المشكله.
انا بحاول اعمل iteration لل JsonObject و بعديها بعمل مره كمان فوق الJsonArray علشان احصل على القيمه.
أنا عامل فى التطبيق بتاعى 3 ملفات.
ملف MainActivity
و دا اللى عامل فيه Parsing وبقرأ فيه ملف الJSON و بقرأ منه القيم.
DetailActivity
دا اللى هحتاج فيه الString بتاعة videoID.
PostModel
القائمة اللى فيها ال getter و ال setter و كل الStrings اللى بحتاج لها فى الملفين الاخرين.
JSON:
{
"status":"ok",
"count":10,
"count_total":184,
"pages":19,
"posts":[
{ },
{
"id":2413,
,
"categories":[
{
"id":100,
"slug":"logging",
"title":"logging",
"description":"",
"parent":0,
"post_count":1
}
],
"comments":[
{
"id":3564,
"content":"<p>\u47 <\/p>\n",
"parent":0
}
],
"comment_count":1,
"thumbnail":"http:\/\/www.5.com\/wtent\g",
"custom_fields":{
"dsq_thread_id":[
"2365140"
],
"videoID":[
"--ffwf92jvDFy"
]
},
"thumbnail_images":{
"full":{
"url":"http:\/\/www.5.com\/jpg",
"width":727,
"height":454
},
"thumbnail":{
"url":"http:\/\/www.5.com\/wp-con50.jpg",
"width":150,
"height":150
}
}
}
]
}
القيمة المطلوب الحصول عليها هى قيمة الــ videoID
PostModel:
private List<CategoryCast> categoryCastList;
private List<VidCast> videoIDList
private String videoID;
private JSONObject obj;
public JSONObject getObj() {
return obj;
}
public void setObj(JSONObject obj) {
this.obj = obj;
}
public String getVideoID() {
return videoID;
}
public void setVideoID(String videoID) {
this.videoID = videoID;
}
public List<VidCast> getvideoIDList() {
return videoIDList;
}
public void setvideoIDList(List<VidCast> videoIDList) {
this.videoIDList = videoIDList;
}
public List<CategoryCast> getCategoryCastList() {
return categoryCastList;
}
public void setCategoryCastList(List<CategoryCast> categoryCastList) {
this.categoryCastList = categoryCastList;
}
public static class CategoryCast {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static class VidCast {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
MainActivity:
List<PostModel.VidCast> videoIDList = new ArrayList<>();
for (int y = 0; y < finalObject.getJSONObject("custom_fields").length(); y++) {
PostModel.VidCast vidCast = new PostModel.VidCast();
for (int s = 0; s < finalObject.getJSONArray("videoID").length(); s++){
{
postModel.setVideoID(videoID);
postModelList.add(postModel);
};
}
vidCast.setName(finalObject.getJSONObject("custom_fields").getJSONObject(y).get("0"));
videoIDList.add(vidCast);
}
postModel.setvideoIDList(videoIDList);
postModelList.add(postModel);
List<PostModel.CategoryCast> categoryCastList = new ArrayList<>();
for (int j = 0; j < finalObject.getJSONArray("categories").length(); j++) {
PostModel.CategoryCast categoryCast = new PostModel.CategoryCast();
categoryCast.setName(finalObject.getJSONArray("categories").getJSONObject(j).getString("title"));
categoryCastList.add(categoryCast);
}
postModel.setCategoryCastList(categoryCastList);
// adding the final object in the list
postModelList.add(postModel);
}
return postModelList;
DetailActivity:
StringBuffer stringBuffer = new StringBuffer();
for(PostModel.CategoryCast categoryCast : postModel.getCategoryCastList()){
stringBuffer.append(categoryCast.getName() + ", ");
}
StringBuffer videoStringBuffer = new StringBuffer();
for(PostModel.VidCast videoIDList : postModel.getvideoIDList()) {
videoStringBuffer.append(videoStringBuffer.toString());
}
دا اللى هحتاج فيه الString بتاعة videoID.
وشكراً