知识储备:JSON数据解析

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);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值