如何使用json方法解析android中没有键名的数组内的嵌套json编码数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用json方法解析android中没有键名的数组内的嵌套json编码数组?相关的知识,希望对你有一定的参考价值。
[我正在尝试使用json解析器从php获取值,但是在解析时我一直卡在嵌套数组中,当我尝试获取嵌套的图片网址时,它会转换为一个完整的字符串,而且格式也不同,[不是网址格式]。我已经尝试了所有堆栈溢出示例,但是找不到解决方案。请帮助我解决此问题。
JSON
{
"result_data": [
{
"images": [
"uploads/news_feeds/08_01_2020/news_080120201201140.png",
"uploads/news_feeds/08_01_2020/news_080120201201141.png"
],
"videos": [],
"audios": [],
"title": "test1",
"description": "test"
},
{
"images": [],
"videos": [],
"audios": [],
"title": "test3",
"description": "test333333333333"
},
{
"images": [],
"videos": [],
"audios": [],
"title": "test5",
"description": "test55555555555555555555"
},
{
"images": [],
"videos": [],
"audios": [],
"title": "aasa",
"description": "asdsadasdad"
}
],
"result_message": "success",
"result_status": 1
}
我输入的我的代码
protected void onPostExecute(String Image_result) {
String Title;
String Description;
JSONArray Images = null;
String Audios;
String Videos;
JSONObject jsonObjects = null;
try {
jsonObjects = new JSONObject(Image_result);
jsonArray_New = jsonObjects.getJSONArray("result_data");
if(jsonArray_New!=null){
try
{
for (int i = 0; i < jsonArray_New.length(); i++)
{
JSONObject jsonObject = jsonArray_New.getJSONObject(i);
Images = jsonObject.getJSONArray("images");
for (int j = 0; j < Images.length(); j++)
{
JSONObject imgObjects = Images.getJSONObject(j);
Imagess[j] = imgObjects.getString( "" );
Log.d(" Imagess[j]" , "" + Imagess[j] );
Toast.makeText( MainActivity.this , "res" + Imagess[j] ,Toast.LENGTH_LONG ).show();
}
//Videos = jsonObject.getString("videos");
Title = jsonObject.getString("title");
Description = jsonObject.getString("description");
//Audios = jsonObject.getString("audios");
Log.d("printjs" , "" + Images );
Log.d("printjs" , "" + Title );
}
} catch (JSONException e)
{
e.printStackTrace();
}
}
} catch (JSONException e1) {
e1.printStackTrace();
}
}
标题正确获取,但在图像部分获取,但显示类型java.lang.String不能转换为logObject中的错误作为JSONObject。
我不知道这是解析json的正确方法,任何人都可以帮助我解决此问题。
Logcat
01-09 02:26:53.789 19670-19670/com.example.myapplication W/System.err: org.json.JSONException: Value uploads/news_feeds/08_01_2020/news_080120201201140.png at 0 of type java.lang.String cannot be converted to JSONObject
01-09 02:26:53.791 19670-19670/com.example.myapplication W/System.err: at org.json.JSON.typeMismatch(JSON.java:100)
01-09 02:26:53.791 19670-19670/com.example.myapplication W/System.err: at org.json.JSONArray.getJSONObject(JSONArray.java:514)
01-09 02:26:53.791 19670-19670/com.example.myapplication W/System.err: at com.example.myapplication.MainActivity$Image_data.onPostExecute(MainActivity.java:99)
01-09 02:26:53.791 19670-19670/com.example.myapplication W/System.err: at com.example.myapplication.MainActivity$Image_data.onPostExecute(MainActivity.java:41)
01-09 02:26:53.791 19670-19670/com.example.myapplication W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:632)
01-09 02:26:53.791 19670-19670/com.example.myapplication W/System.err: at android.os.AsyncTask.access$600(AsyncTask.java:177)
01-09 02:26:53.791 19670-19670/com.example.myapplication W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
01-09 02:26:53.792 19670-19670/com.example.myapplication W/System.err: at android.os.Handler.dispatchMessage(Handler.java:110)
01-09 02:26:53.792 19670-19670/com.example.myapplication W/System.err: at android.os.Looper.loop(Looper.java:193)
01-09 02:26:53.792 19670-19670/com.example.myapplication W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5333)
01-09 02:26:53.792 19670-19670/com.example.myapplication W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
01-09 02:26:53.792 19670-19670/com.example.myapplication W/System.err: at java.lang.reflect.Method.invoke(Method.java:515)
01-09 02:26:53.792 19670-19670/com.example.myapplication W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
01-09 02:26:53.792 19670-19670/com.example.myapplication W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
01-09 02:26:53.793 19670-19670/com.example.myapplication W/System.err: at dalvik.system.NativeStart.main(Native Method)
答案
您的问题在于您要捕获图像的内部for循环JSONObject imgObjects = Images.getJSONObject(j);
。这是您的解决方法:
以上是关于如何使用json方法解析android中没有键名的数组内的嵌套json编码数组?的主要内容,如果未能解决你的问题,请参考以下文章
使用 TSQL OPENJSON 如何从具有动态键名的 JSON 数组中提取值
如何使用 Angular 在 HTML 中访问没有键名的数组对象