什么是JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
客户端(浏览器端)与服务器端交互: xml ison
本质 就是具有特定格式的字符串
JSON数据 已经是客户端与服务器端交互的最常用的选择,已经很少使用xml来进行数据交互了
JSON数据解析
1)解析技术:
Android原生API :编程相对麻烦
Gson框架:编码简洁,项目首选
2)解析方向:
服务器端:将java对象(包含集合)转换为json格式字符串
客户端:将json格式字符串转换为java对象(包含集合)
JSON数据格式
整体结构:
String json1 ="{“id” : 12,“name”:“Tom”}";
String json2 ="[{“id” : 12,“name”: “Tom”}, {“id”: 12,“name”:“Tom”}]";
Json数组:[ ]>ArrayList
Json对象:{ }→>HashMap
Json数组的结构:
[value1, value2, value3]
Json对象的结构:
{key1:value1, key2:value2, key3:value3}
key的数据类型:
字符串
value的数据类型:
数值(包含整数和小数)
字符串
null
json数组 [ ] String jsonArr ="[value1,value2,value3,value4]";"[1,2,3]"
json对象{ } String jsonObject = “{key1:value1,key2:value2,key3:value3}”;
例子:
[1,“ab”,[],{“n”:123,“b”:“abc”}] [1, “a”:3]
{“name” :“TOM”, “age”:12} {“aa”:“a”,[3]}
相关API
Android原生APl:
JsonObject类: json对象{ }
JSONObject(String json):将json字符串解析为json对象
Xxx getXxx(String name):根据name,在json对象中得到对应的Value
JsonArray类: json数组[ ]
JSONArray(String json):将json字符串解析为json数组
int length():得到json数组中元素的个数
Xxx getXxx(int index):根据下标得到json数组中对应的元素数据
Gson框架API
Gson :能解析json数据的类
Gson():构造对象的方法
String toJson(Object src):将对象转换为对应格式的json字符串
T fromJson(String json, Type typeofT):解析Json字符串,得到对象
TypeToken :用来得到Type的类
protected TypeToken():受保存的构造方法
Type getType():得到类型对象
.解析
原生API JSONObject
JSONObject json=new JSONObject(str); String obj=json.getString(“weatherinfo”); JSONObject json2=new JSONObject(obj); System.out.println(json2.getString(“city”));
Gson
引入类库到工程:创建json对应的对象实体类
Gson gson=new Gson(); Weatherinfo w= gson.fromJson(str,Weatherinfo.class); //类型 //对象数组 //List list = gson.fromJson(str,new TypeToken (){}.getType());
Fastjson
List list =JSON.parseArray(str,Weatherinfo.class); for(Weatherinfo w:list){ System.out.println(“转换结果=”+w); }