我在解析带有数组的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.parse
包含该JSON文本的字符串的结果,并且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
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句