在安卓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官网