知识储备:JSON数据解析

来源:互联网 发布:linux文件列表 编辑:程序博客网 时间:2024/05/29 16:00

Json数据概念介绍

  1. 概念:Json(JavaScript Object Notation):JavaScript对象表示法,是一种轻量级的数据交换格式。可以将json数据简单理解成有特定格式的字符串数据。Json数据交互呢指的就是这种特定格式字符串数据的传递。
  2. 与XML数据的比较:
    1) 扩展性方面:XML数据的扩展性更好,通用性比较强
    2) 数据传输方面:Json传输的数据量小,传输的速度快
    3) 数据交互方面:Json数据的交互更加方便,解析过程更简单
    4) 数据描述方面:XML对数据的描述性更强

Json的两种数据结构
1、Json对象:键值对的集合,

{    “name”:“jack”,    “age”:20}

2、Json数组:值得有序列表(value可以使字符串、数字)

[    {"name" : "jack1","age" : "30"},{"name" : "jack2""age" : 30}]

Json数据的构造
json数据解析常用的类:JSON、JSONObject、JSONArray

/***@pram key json对象的标识*@pram value xml、javabean、ArrayList、Map对应的json数据*/public static String createJSONString(String key, Object value) {    JSONObject jsonObject = new JSONObject();    jsonObject.put(key, value);    return jsonObject.toString();}

JSONObject提供了相应的API接口将XML数据、javabean数据、ArrayList数据、HashMap数据构造成相应的json数据。

Json数据的解析
可以通过JSONObject、JSONArray获得json数据对应的json对象或者数组,之后再将它们解析成对应的javabean啊、ArrayList啊,、HashMap形式的数据
1) 例如,对简单json数据的解析

{    "person":     {"address":"beijing","id":1001,"name":"jack"}}
Person person= new Person();JSONObject jsonObject = new JSONObject(jsonString);//获得该json数据对应的json对象JSONObject personObject = jsonObjec.getJSONObject("person");//获取{"address":"beijing","id":1001,"name":"jack"}该json对象person.setId(personObject.getInt("id"));//根据key值获取相应的数据

2) 对含有json数组的json数据解析

{    "persons" :    [    {"address":"beijing","id":1000,"name":"jack"},    {"address1":"jiangxi","id1":1001,"name1":"jack1"},    {"address2":"hebei","id2":1002,"name2":"jack2"}    ]}
List<Person> list = new ArrayList<Perosn>();JSONObject jsonObjet = new JSONObject(jsonString);//获得json素组对象JSONOArray = jsonObject.getJSONArray("persons");//遍历json数组对象for(int i = 0; i < jsonArray.length(); i++) {    JSONObject jsonObject2 = jsonArray.getJSONObject(i);    person.setId(personObject.getInt("id"));    list.add(person);}
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();JSONObject jsonObjet = new JSONObject(jsonString);JSONOArray = jsonObject.getJSONArray("persons");for(int i = 0; i < jsonArray.length(); i++) {    JSONObject jsonObject2 = jsonArray.getJSONObject(i);    Map<String,Object> map = new HashMap<String,Object>();O    for(Iterator<String> iter = jsonObject2.keys(); iter.hasNext();) {        String jsonKey = iter.next();        Objcet jsonValue = jsonObject.get(jsonKey)        map.put(jsonKey,jsonValue);    }    list.add(map);}
0 0