本节引言:
1.Json概念以及与XML的比较
1)Json是什么?
2)Json与XML的比较:
3)Json的格式规范:
[ { "id":"1","name":"基神","age":"18" }, { "id":"2","name":"B神","age":"18" }, { "id":"3","name":"曹神","age":"18" } ]
2.Android给我们提供的Json解析类
3.代码示例:解析Json字符串:
PS:这里我们就不另外写servlet或者请求网站,直接把Json写到字符串中来解析,模拟下就算了!
1)简单的Json字符串解析示例:
我们解析的是上面这个简单的Json,首先我们来写一个POJO类:
Person.java:
/** * Created by Jay on 2015/9/8 0008. */ public class Person { private String id; private String name; private String age; public void setId(String id){ this.id = id; } public String getId(){ return this.id; } public void setName(String name){ this.name = name; } public String getName(){ return this.name; } public void setAge(String age){ this.age = age; } public String getAge(){ return this.age; } @Override public String toString() { return this.name + "~年方:" + this.age; } }
写一个解析上述Json字符串的方法:
private void parseEasyJson(String json){ persons = new ArrayList<Person>(); try{ JSONArray jsonArray = new JSONArray(json); for(int i = 0;i < jsonArray.length();i++){ JSONObject jsonObject = (JSONObject) jsonArray.get(i); Person person = new Person(); person.setId(i+""); person.setName(jsonObject.getString("name")); person.setAge(jsonObject.getString("age")); persons.add(person); } }catch (Exception e){e.printStackTrace();} }
运行效果图:
嘿嘿,很简单是吧,接下来我们找一个复杂点的!
2)复杂的Json字符串解析示例:
如果是这样的Json字符串呢?
呵呵,那就需要我们一步步来扣数据了:
解析代码如下:
private void parseDiffJson(String json) { try { JSONObject jsonObject1 = new JSONObject(json); Log.e("Json", json); JSONArray jsonArray = jsonObject1.getJSONArray("ch"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = (JSONObject) jsonArray.get(i); //取出name String sname = jsonObject.getString("names"); JSONArray jarray1 = jsonObject.getJSONArray("data"); JSONArray jarray2 = jsonObject.getJSONArray("times"); Log.e("Json", sname); Log.e("Json", jarray1.toString()); Log.e("Json", jarray2.toString()); } } catch (Exception e) { e.printStackTrace(); } }
看下打印的Log:
当然还有一层,有兴趣你就自己扣...