1. Json是什么?
JavaScript Object Natation, 一种轻量级的数据交换格式, 与XML一样, 广泛被采用的客户端和服务端交互的解决方案!具有良好的可读和便于快速编写的特性。
2. Json与XML的比较
JSON和XML的数据可读性基本相同;
JSON和XML同样拥有丰富的解析手段
JSON相对于XML来讲,数据的体积小
JSON与JavaScript的交互更加方便
JSON对数据的描述性比XML较差
JSON的速度要远远快于XML
3. Json的格式规范
就像协议一样,肯定是有一套规范的,毕竟双方都是通过Json字符串来传递数据,语法规则如下: 数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组; 而Json数据的书写格式:名称/值对 比如: "person":"coder-pig" 比如一个简单的Json字符串:
4. Android给我们提供的Json解析类
JSONObject: Json对象,可以完成Json字符串与Java对象的相互转换
JSONArray: Json数组,可以完成Json字符串与Java集合或对象的相互转换
JSONStringer: Json文本构建类,这个类可以帮助快速和便捷的创建JSON text, 每个JSONStringer实体只能对应创建一个JSON text
JSONTokener:Json解析类
JSONException:Json异常
5.简单的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();}
}
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);//取出nameString 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();}}