如何检查JSON数组是否存在并可用?

4

我将在我的应用程序中加载一个JSON数组。但是我需要知道JSON数组是否存在,因为如果JSON数组不存在,应用程序将会崩溃。

例如,我有以下JSON:

{ 
"music1":
    [
    {
    "art":"",
                 "artist":"",
    "music":"",
     "flag":"",
                 "text":"",
                 "level":""
 }, 
    {
    "art":"",
                 "artist":"",
    "music":"",
    "flag":"",
                 "text":"",
                 "level":""
 },
]
}

我希望知道我的代码中是否有名为"music1"的JSON对象,如果有,我想获取JSON数组并在我的安卓应用程序中以列表形式显示。

我期待一个能够帮助我的英雄!


欢迎来到Stackoverflow。为了回答你的问题,你应该提供更多关于你的代码的细节,例如导致崩溃的代码片段。 - Denis Loh
只需抛出“JSONException e”,它将跟踪json中没有与您的数组对应的值,可能导致您的应用程序崩溃。 - Iamat8
2个回答

7
我希望您能够在评论中提供这个解释。无论如何:
{ 
"music1":
    [
    {
    "art":"",
                 "artist":"",
    "music":"",
     "flag":"",
                 "text":"",
                 "level":""
 }, 
    {
    "art":"",
                 "artist":"",
    "music":"",
    "flag":"",
                 "text":"",
                 "level":""
 }
]
}

让我们称上述JSON对象为o。要检查o是否有music1,您只需要编写以下代码行:
if(o.has("music1")){
   JSONArray array= o.getJSONArray("music1");
}

然后,您需要提取JSON数组中的对象:
for(int i=0;i<array.length();i++){
     array.getJSONObject(i);
}

2

检查字段的可用性:

if(jsonObj.has("music1")){
    //yes
}

对于这种情况:
JSONArray mJSONArray = jsonObj.optJSONArray("nmusic1");

如果数组不可用,mJSONArray 将为空。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接