概念:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
特点:
- 本质是具有特定格式的字符串
- JSON完全独立于编程语言
- JSON比XML数据传输的有效性要高出很多
JSON数据结构:
-
整体结构
- String json1="{"id":12 , "name":"Tom"}"
- String json1="[{"id":12 , "name":"Tom"},{"id":13 , "name":"Sum"}]"
-
JSON 对象(java-map)
(1)**JSON**对象的结构:{key1:value1,key2,value2} (2)**key**的数据类型:字符串 (3)**value**的数据类型:数值,字符串,null、json数组[]、json对象{}
-
JSON 数组(java-list)
(1)**JSON**数组的结构:[value1,value2,value3] (2)**value**的数据类型:数值,字符串,null、json数组[]、json对象{}
正确例子:[1,"ab",[],{"n":123,"b":"abc"}]
错误例子:[1,"a":3]
JSON解析方向:
JSON数据格式都是字符串,操作起来都不大方便。
如果将JSON转换成JAVA bean操作起来就很方便
JSON的解析方向:
1.将java对象(包含集合)转换成json字符串 ---在服务器端应用
2.将json格式字符串转换为java对象(包含集合) ---在客户端应用
(1.2:参考客户端与服务端数据转行)
3.JSON和Java之间的转换关系:
- JSON对应Java对象
- JSON数组和Java对象构成的List对应
JSON解析技术:
1)Android原生技术
特点:编程相对麻烦,但是是Google官方提供的,有些JSON数据必须要Android原生技术来解析。Google官方没有提供将Java转换成json数据的API
数据之间转换:
(1)将JSON格式的字符串{}转换成Java对象
API:JSONObject(String json):将json字符串解析为json对象
Xxx getXxx (String name):根据name,在.json对象中得到对应的value
Xxx optXxx (String json):根据name,在.json对象中得到对应的value
get和opt的区别而:optXxx会在对应的key中的值不存在的时候返回一个空字符串或者你指定的默认值,而getString会出现空指针异常的错误
(2)将JSON格式的字符串[]转换成Java对象的List
API:JSONArray(String json):将json字符串解析为json数组
int length ():得到json数组中元素的个数
Xxx getXxx (String name):根据name,在.json对象中得到对应的value
Xxx optXxx (String json):根据name,在.json对象中得到对应的value
get和opt的区别而:optXxx会在对应的key中的值不存在的时候返回一个空字符串或者你指定的默认值,而getString会出现空指针异常的错误
(3)复杂json的数据解析
(4)特殊json的数据解析
2)Gson框架技术
(Gson)[http://mvnrepository.com/artifact/com.google.code.gson/gson]特点:编码简介,谷歌官方推荐
数据间转化:
(1)将json格式的字符串{}转换成Java对象
1. 将Gson的jar包导入到项目中
2. 创建Gson对象: Gson gson=new Gson();
3.通过创建的Gson对象调用fromJson()方法,返回该JSON数据对应的java对象。
ShopInfo shopInfo=gson.fromJson(json,ShopInfo .class);
(2)将json格式的字符串[]转换成Java对象的List
1. 将Gson的jar包导入到项目中
2. 创建Gson对象: Gson gson=new Gson();
3.通过创建的Gson对象调用fromJson(String json,Type typeOfT)
ShopInfo shopInfo=gson.fromJson(json,new TypeToken<List<ShopInfo>>(){}.getType());
(3)将Java对象转换成json字符串{}:String toJson(Object src)
1. 将Gson的jar包导入到项目中
2. 创建Gson对象: Gson gson=new Gson();
3.通过创建的Gson对象调用toJson()方法,返回该JSON数据
ShopInfo shopInfo=new ShopInfo (1,"鲍鱼",250.0);
String json= gson.toJson(shopInfo);
(4)将Java对象的List转换成json字符串[]
1. 将Gson的jar包导入到项目中
2. 创建Gson对象: Gson gson=new Gson();
3.通过创建的Gson对象调用toJson()方法,返回该JSON数据
List<ShopInfo> shops=new ArrayList<>():
String json= gson.toJson(shops);