在安卓apk与后台服务通信时,我们一般有2中可以选择的数据格式xml和json. 而json作为一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,相比xml更轻量级,传输速度更快.在安卓中对json的解析我们一般有两种方式,一种是使用安卓自带api,一种是使用gson这个第三方的库.
一原生解析
系统自带的解析类都在 org.json这个包下面.常用的类有JSONObject,JSONStringer,JSONArray.
JSONObject:可以传入一段json字符串参数,也可以不传参数新建一个json对象.
常用方法 :put(key,value)为json对象添加键值
getType和optType:更具键值或者索引(Json数组)获取json对象的值,两者的区别在于,optType可以在没有值的时候
提供一个默认值
JSONArray::可以传入一段json字符串参数,也可以不传参数新建一个jsonarray对象.
常用api:1.put(key,value)为json对象添加键值
2.getType和optType:更具键值或者索引(Json数组)获取json对象的值,两者的区别在于,optType可以在没有值的时候提供一个默认值
JSONStringer:利用代码的形式来构建json文本
JSONStringer jsonText = new JSONStringer();
// 首先是{,对象开始。object和endObject必须配对使用
jsonText.object();
jsonText.key("phone");
// 键phone的值是数组。array和endArray必须配对使用
jsonText.array();
jsonText.value("123").value("345");
jsonText.endArray();
jsonText.key("name");
jsonText.value("zhangfei");
jsonText.key("age");
jsonText.value(100);
jsonText.key("address");
// 键address的值是对象
jsonText.object();
jsonText.key("country");
jsonText.value("china");
jsonText.key("province");
jsonText.value("jiangsu");
jsonText.endObject();
jsonText.key("isStudent");
jsonText.value(false);
// },对象结束
jsonText.endObject();
二 Gson框架
使用如下:1.将字符串转化为javabean对象
Gson gson = new Gson();
Student student = gson.fromJson(jsonString,Student.class);
使用gson时解析数据时,必须新建javabean对象,还要注意javabean的属性名字必须和json字符串的名字一样.
2.将对象转为json字符串
Gson gson = new Gson();
String string = gson.toJson(value);
关于更多gson的api请参考gson官网