最近项目当中用Json传输,但是被返回的数据困惑了半天(返回的数据只有头是有key的并且是数组嵌套数组最后在解析内部数组时十分无奈只能用split进行分割!!)
try {
JSONObject jsonObject = new JSONObject(result.toString());
// 获取某个对象的JSON数组
JSONArray jsonArrayone = jsonObject.getJSONArray("result").getJSONArray(0);//以result解析
for (int i = 0; i < jsonArrayone.length(); i++) {
Person person=new Person();
String temp_item= (String) jsonArrayone.opt(i);//相应的对象数组但类型为String
String[] item=temp_item.substring(2, temp_item.length()-2).split("\",\"");
person.setId(Integer.parseInt(item[0]));
person.setName(item[1]);
person.setAvator_image(item[2]);
person.setProblem(Integer.parseInt(item[3]));
list_persons.add(person);
}
GridViewAdapter adapter= new GridViewAdapter(R.layout.person_item,MainActivity.this ,list_persons, cache);
gridview.setAdapter(adapter);
}
常见的几种数组解析
若返回的就是一个json数组那么直接转为JSONArray
try {
JSONArray jsonArray = new JSONArray(json);
for (int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i);
//里面用直接getString("key")取就好了这种比较常见
}
总而言之数据转json
1.若数据为数组这直接
<span style="font-family:KaiTi_GB2312;">JSONArray jsonArray = new JSONArray(json);</span>
2.若数据是对象套数组则通过key获取相应的value,数组的value在转为JSONArray重复1的步骤
3.最后通过通过for循环把相应的value值取出!!!
若json为一个对象 那么直接通过key取出来就ok了
个人小结。。有问题还望指出。