Android 数据操作(三)Json解析

Json 数据是android 客户端与服务端进行数据传递,非常重要的数据组织格式。

这篇blog主要来记载如何用alibaba的json解析库,com.alibaba:fastjson,进行json数据转换成java对象

首先,我们先来简单介绍下json数组的组织语法:

{} 双括号表示对象

[] 中括号表示数组

"" 双引号内是属性或值

: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)


现在,我们来看看如何去解析json数据

1.首先创建一个json文档。
 我们在res/raw目录下,新建文本json_test.txt,其具体内容如下:
{
    "v": "20160613",
    "type": "1",
    "list": [
        {
            "pkgs":[ "ic_app_phone",
                    "ic_app_phone_other"],
            "loc": "0",
            "screen": "0"
        },

        {
            "pkgs": ["ic_app_settings",
            "ic_app_settings_test1",
            "ic_app_settings_test2"],

            "loc": "11",
            "screen": "0"
        }
    ]
}
注意:key、value(普通类型与数组类型的组织形式)

2.com.alibaba:fastjson包的导入。
在build.gradle文件中 dependencies 内容中加入如下:
compile 'com.alibaba:fastjson:1.2.17'

3.创建Json转换成Java对象的Bean类型。
public class JsonBean {
    public String v;
    public String type;
    public List<Info> list;
  //注意:这里关键字的名字一定要与Json文本中key值相同。
    public static class Info{
        public List<String> pkgs;
        public String loc;
        public String screen ;
  //注意:这里关键字的名字一定要与Json文本中key值相同。
 }}
 4. 读入文本,并进行解析 
public class Controller {
    private Context mContext;

    public Controller(Context context) {
        mContext = context;
        String jsonStr = getJsonInfoFromRaw();
        JsonBean bean = JSON.parseObject(jsonStr, JsonBean.class);
        printJsonInfo(bean);

    }

    private String getJsonInfoFromRaw(){
        String result="";
        try {
            InputStreamReader inputReader = new InputStreamReader( mContext.getResources().openRawResource(R.raw.json_test));
            BufferedReader bufReader = new BufferedReader(inputReader);
            String line="";

            while((line = bufReader.readLine()) != null)
                result += line;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    private void printJsonInfo(JsonBean bean) {
        String version = bean.v;
        String type = bean.type;
        Log.e("vnbo","vnbo hello test version is "+version + " type is "+type);
        List<JsonBean.Info> list = bean.list;
        if(list != null && list.size() != 0) {
            for(int i = 0; i < list.size(); i++) {
                Log.e("vnbo","vnbo hello test loc is "+list.get(i).loc + " screen is "+list.get(i).screen);
                for(int j = 0 ; j < list.get(i).pkgs.size(); j++) {
                    Log.e("vnbo","vnbo hello test pkgs is "+list.get(i).pkgs.get(j));
                }
            }

        }

    }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值