cur*_*gie 15 java android json object
我有下面的JSON文件,必须将其转储到ArrayList中:
{
"main1" : [
{
"child1" : valueA,
"child2" : valueB,
"child3" : valueC,
},
{
"child1" : value1,
"child3" : value3,
},
],
"main2" : "valueMain2"
}
Run Code Online (Sandbox Code Playgroud)
child2
必须检查该元素是否存在,然后获取该值.您可以看到它没有出现在第二个数组中.
我使用的是Native JSON(org.JSON)Java代码如下:
ArrayList<HashMap<String,String>> myList = new ArrayList<HashMap<String,String>>();
JSONObject json = <my_json_object>;
JSONObject getchild2;
JSONArray jArray = <my_json_object>.getJSONArray("main1");
for(int j = 0; j < jArray.length(), j++){
HashMap<String,String> map = new HashMap<String,String>();
map.put("First Value", jArray.getJSONObject(j).getString("child1"));
map.put("Third Value", jArray.getJSONObject(j).getString("child3"));
getchild2 = jArray.getJSONObject(j).getJSONObject("child2");
if(getchild2 == null){
map.put("Second Value", "Some Dummy Value");
} else {
map.put("Second Value", jArray.getJSONObject(j).getString("child2"));
}
myList.add(map);
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
<my_json_object>
使用本机URL解析,因为我得到了这里找到的URL请求的HTTP响应:http://mobisys.in/blog/2012/01/parsing-json-from-url-in-android/
它不起作用,因为错误如下:
E/AndroidRuntime(664): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
Run Code Online (Sandbox Code Playgroud)
cur*_*gie 37
无论如何,我通过一些谷歌搜索获得了解决方案:我重新构建了它,
if (!jArray.getJSONObject(j).has("child2")) {
map.put("Second Value", "N.A");
} else {
map.put("Second Value", jArray.getJSONObject(j).getString("child2"));
}
Run Code Online (Sandbox Code Playgroud)
创建JSONObject getchild2 = jArray.getJSONObject(j).getJSONObject("child2"); 相当,没必要.
这很有效!有关更多详细信息,请参阅此内容:检查JSON中是否存在subObject
谢谢大家的帮助!
Abd*_*aly 11
getJSONObject("child2");
Run Code Online (Sandbox Code Playgroud)
如果child2不存在,将抛出异常.试试这个:
getchild2 = jArray.getJSONObject(j).optJSONObject("child2");
Run Code Online (Sandbox Code Playgroud)
这样,如果child2不存在,您不必捕获异常,而是可以检查null.
归档时间: |
|
查看次数: |
44093 次 |
最近记录: |