JSON解析

Posted on 2016-11-03 15:01  田满意  阅读(589)  评论(0)    收藏  举报

一、JSON解析_JSON数据格式

①JSON对象 例如: String json1="{"id":12,"name":"Tom"}"; 类似于java中的map

②JSON数组  例如:String json2="[{"id":12,"name":"Tom"},{"id":12,"name":"Tom"}]";  类似于java中的List

二、JSON解析方向

 ①json-->bean

 ②bean-->json

三、JSON解析技术

①Android原生技术

1>将json格式的字符串{}装换成Java对象

  <1>、JSONObject(String json):将json字符串解析为json对象

  <2>、getXxx(String name):根据name,在json对象中得到对应的Value

  <3>、optXxx(String name):根据name,在json对象中得到对应的Value

  注意:optXxx方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值,但是getString会出现空指针的错误

解析过程:

  String json ="{"id":2, "name":"大虾","price":12.3,"imagePath":"http://192.168.10.165:8080/L05_Server/images/f1.jpg"}";

   JSONObject jsonObject = new JSONObject(json);

   int id = jsonObject.getInt("id");

 String name = jsonObject.optString("name");
double price = jsonObject.optDouble("price");
String imagePath = jsonObject.optString("imagePath");

//注意下面与bean发生联系啦 这样将数据封装在bean内 以后处理数据就很方便啦

 ShopInfo shopInfo = new ShopInfo(id, name, price, imagePath);
 

 

 

2>将json格式的字符串[]装换成Java对象的List

<1>JSONArray(String json):将json字符串解析为json数组

<2>int length():得到json数组中元素的个数

<3>getXxx(int index):根据下标得到json数组中对应的元素数据

<4>optXxx(int index):根据下标得到json数组中对应的元素数据

 注意:optXxx方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值,但是getString会出现空指针的错误

测试数据:

[
{
"id":1, "name":"大虾1",
"price":12.3,
"imagePath":"http://192.168.10.165:8080/f1.jpg"
},
{
"id":2, "name":"大虾2",
"price":12.5,
"imagePath":"http://192.168.10.165:8080/f2.jpg"
}
]

3>复杂json数据解析

测试数据:

4>特殊json数据解析

测试数据:

{
"data": {
"count": 5,
"items": [
{
"id": 45,
"title": "坚果"
},
{
"id": 132,
"title": "炒货"
},
{
"id": 166,
"title": "蜜饯"
},
{
"id": 195,
"title": "果脯"
},
{
"id": 196,
"title": "礼盒"
}
]
},
"rs_code": "1000",
"rs_msg": "success"

②Gson框架技术

③FastJson框架技术