Android基础之Json解析(中)

本文介绍Android开发中Gson和FastJson两种JSON解析框架的使用方法,包括JSON字符串与Java对象之间的相互转换。

        今天,来总结一下android之json解析中常用的技术框架库:Gson和FastJson。上一篇文章,已经说过,Json作为跨平台的数据传输格式,应用很广泛,特别在网络请求与服务器这两块更是处处可见,所以掌握几种常用的Json解析的框架技术是很有必要的,它们可以实现java对象与json字符串数据的转换。

首先,需要下载jar包或者依赖一下这两个库,目前as中已经为我们提供了最新版本的Gson和FastJson包,所以,我们只需要依赖一下就可以了,又或者,你更想用jar形式来导入,无可厚非,放一下网址吧:https://github.com/google/gson和https://github.com/alibaba/fastjson,可自行下载jar包。

下面,来看看他们简单使用方式吧,先从Gson讲起吧!

  1. Gson的使用

常见的有四种使用情况:分别是将Json格式字符串转化为Java对象、将Json格式字符串数组转化为java对象list、将Java对象转化为json格式字符串和将Java对象的list转化为json格式的字符串数组。

我们来依次看看他们的使用方法:

(1)将json格式的字符串转换为Java对象
    private void jsonToJavaObjectByGson() {


        // 1 获取或创建JSON数据
        String json = ".....";//数据省略


        // 2 解析JSON数据
        Gson gson = new Gson();

        ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);

        // 3 展示数据
        tv_orignal.setText(json);//原始数据
        tv_last.setText(shopInfo.toString());//转化后的数据


    }

是的,没看错,原本json原生解析方法多行代码在这里是使用了Gson后仅仅只要两行,是不是很快捷方便。这里我们需要提前创建一个java的数据实体类,用于接收json数据,上一章我们已经创建过了,所以这里就不重复造轮子了。

(2)将json格式的字符串数组转换为Java对象的List


    private void jsonToJavaListByGson() {


        // 1 获取或创建JSON数据
        String json = "[.....]";//数据省略


        // 2 解析JSON数据
        Gson gson = new Gson();

        List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {
        }.getType());


        // 3 展示数据
        tv_orignal.setText(json);
        tv_last.setText(shops.toString());
    }

注意,这里的fromJson传入的第二个参数是获取泛型的数据类型,这里同样很好理解

(3)将Java对象转换为json字符串
    private void javaToJsonObjectByGson() {


        // 1 获取或创建Java对象
        ShopInfo shopInfo = new ShopInfo(1,"咸蛋",2.0,"xiandan");


        // 2 生成JSON数据
        Gson gson = new Gson();


        String json = gson.toJson(shopInfo);


        // 3 展示数据
        tv_orignal.setText(shopInfo.toString());
        tv_last.setText(json);
    }

之前将json数据转化为java数据时用的是fromJson(),而这里使用的是toJson()

(4)将Java对象的List转换为json字符串数组
    private void javaToJsonArrayByGson() {


        // 1 获取或创建Java对象
        List<ShopInfo> shops = new ArrayList<>();
        ShopInfo rubber = new ShopInfo(1, "橡皮", 25.0, "rubber");
        ShopInfo pen = new ShopInfo(2, "钢笔", 31.0, "pen");


        shops.add(rubber);
        shops.add(pen);


        // 2 生成JSON数据
        Gson gson = new Gson();
        String json = gson.toJson(shops);


        // 3 展示数据
        tv_orignal.setText(shops.toString());
        tv_last.setText(json);
    }

java对象list转成json数组更简单,直接传入java对象list就ok

了解了gson基本用法,下面来看看fastJson吧:

2.FastJson的使用

fastJson的使用与Gson大同小异,都很方便,几行代码就搞定,也分为四种情况,这里就只放一下实现部分的代码了,理解都很容易,不做过多解释了:
(1)将json格式的字符串转换为Java对象
    private void jsonToJavaObjectByFastJson() {


        // 1 获取或创建json数据
        String json = ".....";//数据略


        // 2 解析JSON数据
        ShopInfo shopInfo = JSON.parseObject(json, ShopInfo.class);


        // 3 显示数据
        tv_orignal.setText(json);
        tv_last.setText(shopInfo.toString());
    }
// (2)将json格式的字符串数组转换为Java对象的List
    private void jsonToJavaListByFastJson() {


        // 1 获取或创建json数据
        String json = "[.....]";

       // 2 解析JSON数据
        List<ShopInfo> shopInfos = JSON.parseArray(json, ShopInfo.class);

        // 3 显示数据
        tv_orignal.setText(json);
        tv_last.setText(shopInfos.toString());
    }

(3)将Java对象转换为json字符串
    private void javaToJsonObjectByFastJson() {

        // 1 创建一个Java对象
        ShopInfo shopInfo = new ShopInfo(1, "铅笔", 25.0, "pencil");

        // 2 生成JSON数据
        String json = JSON.toJSONString(shopInfo);

        // 3 显示数据
        tv_orignal.setText(shopInfo.toString());
        tv_last.setText(json);
    }

(4)将Java对象的List转换为json字符串数组
    private void javaToJsonArrayByFastJson() {


        // 1 创建一个Java集合
        List<ShopInfo> shops = new ArrayList<>();

        ShopInfo rubber = new ShopInfo(1, "橡皮", 25.0, "rubber");
        ShopInfo pen = new ShopInfo(2, "钢笔", 31.0, "pen");
        shops.add(rubber);
        shops.add(pen);


        // 2 生成JSON数据
        String json = JSON.toJSONString(shops);

        // 3 显示JSON数据
        tv_orignal.setText(shops.toString());
        tv_last.setText(json);


    }

到这里,Gson和FastJson基本用法已经介绍完成了,相比你也像我一样掌握了它们的使用,最后,向大家推荐两个工具:一个是as内部自带的GsonFormat实体类封装工具以及json在线校验工具:http://www.bejson.com/

补充:本文仅作学习记录和供大家参考,有不足和改进之处希望指出,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值