繁体   English   中英

如何使用JSON.parse在JavaScript中使用JSONArray解析JSONObject

[英]How to Parse a JSONObject with JSONArray in JavaScript using JSON.parse

我在解析带有数组的JSON对象并获取基于Key的值时遇到麻烦。 我在我的一个android应用程序中执行此操作。 我打算将应用程序移植到Web应用程序。 在android中,我做这样的事情:

可以说我的json是这样的:

{"radios":[{"name":"radio1","url":"url1"},{"name":"radio2","url":"url2"}, {"name":"radio3","url":"url3"}] }

我的代码在Android中如下所示:

JSONArray radioListArray = jsonObject.getJSONArray("radios");
ArrayList<String> radioUrlColl = new ArrayList<String>();
    for(int i=0; i<radioListArray.length(); i++) {
            JSONObject radObject = radioListArray.getJSONObject(i);
            radioUrlColl.add(radObject.getString("url"));
    }
 Intent radioIntent = new Intent(arg0.getContext(), PlayerActivity.class);
            String url =radioUrlColl.get(arg2); //I get the URL here
            radioIntent.putExtra("radioUrl", url);

基本上,我基于列表视图中Clicked项的位置获取URL。 有没有更简单的解决方案,我可以通过关键字radio1并在Javascript中获取相应的值url1

有没有更简单的解决方案,我可以通过关键字radio1并在Javascript中获取相应的值url1

不,使用该数据的结构,您仍然必须遍历所有条目以查找具有匹配name属性的条目。

所以说obj是在包含该JSON文本的字符串上调用JSON.parse的结果,而targetRadio是您想要的无线电。 obj.radios将是数组。 因此,您可以使用一个简单的for循环:

var n;
var url;
for (n = 0; n < obj.radios.length; ++n) {
    if (obj.radios[n].name === targetRadio) {
        url = obj.radios[n].url;
        break;
    }
}

或者,如果你想依靠ES5的阵列增强(这可以在需要时垫高),你可以使用some

var url;
obj.radios.some(function(entry) {
    if (entry.name === targetRadio) {
        url = entry.url;
        return true; // To stop looping
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM