Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践

概述:

JSON官网
Gson官网

Gson是谷歌开发的Java库,帮助开发人员将Java对象(数组、数据结构)转换为兼容的JSON (JavaScript对象)

它有以下特点:
  • JSON是一种轻量级、独立于语言的数据交换格式,非常适合于数据传输、组织和存储;
  • JSON主要围绕如何保存和记录数据结构,然后轻松地转换为另一种特定于语言的数据结构展开;
  • JavaScript开发人员将JSON作为移动JS数组的主要方式而闻名;
  • 由于每种编程语言都使用数据对象(数组、矩阵),因此使用JSON将数据从一个编程环境传输到另一个编程环境是一个非常方便的解决方案;
  • GSON简单地消除了Java对象的结构和JSON对象之间的差异,允许将Java数据结构保存为JSON;
  • 还支持反向操作: Java to JSON JSON to Java Java object Convert Object JSON Java。

Java中常用于JSON 与Java Object 的转化。

二、 使用:

1 . 前期准备:
在build.gradle 中添加:

implementation ‘com.google.code.gson:gson:2.8.5’

最新版本可到github上获取: https://github.com/google/gson

2. 示例:
Gson提供了两个方法,直接用于json的解析和生成。

fromJson():实现反序列化
toJson(): 实现序列化

2.1.1 基本数据类型的反序列化:
        Gson gson = new Gson();
        int     a = gson.fromJson("1", int.class);
        double  b = gson.fromJson("0.123", double.class);
        boolean c = gson.fromJson("true", boolean.class);
        String  d = gson.fromJson("String", String.class);

Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践_第1张图片

2.1.2 基本数据类型的序列化:
		Gson gson = new Gson();
        String a = gson.toJson(100);
        String b = gson.toJson(0.2334);
        String c = gson.toJson(false);
        String d = gson.toJson("abcdef");

2.1.3 Array 的反序列化:
        String arayJson = "['Android', 'Ios', 'Java', 'PHP']";
        Gson gson = new Gson();
        String[] nameArray = gson.fromJson(arayJson, String[].class);
        Log.d("arrayJson", "onCreateView: " + nameArray);

2.1.4 Array 的序列化:
		ArrayList nameArray = new ArrayList<>();
        nameArray.add("Android");
        nameArray.add("Ios");
        nameArray.add("Java");
        nameArray.add("PHP");
        Gson gson = new Gson();
        String gsonString = gson.toJson(nameArray);

Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践_第2张图片

2.1.5 List/Map的反序列化:
List/Map 反序列化时必须提供它的Type,通过Gson提供的TypeToken.getType()方法可以定义当前List的Type。
		String listString = "[{'userId' : '1',  'userName':'怕瓦落地'}, {'userId':'2','userName':'安娜'}]";
        Gson gson = new Gson();
        Type listType = new TypeToken>>(){}.getType();
        List> list = gson.fromJson(listString, listType);

Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践_第3张图片

3. 实践:

Model 类反序列化: 这个是项目中最常用到的!!!

解析上一节的网络请求 网络请求 中得到的json数据:

或者自行百度输入下方URL查看:

http://c.m.163.com/nc/article/list/T1348649079062/0-10.html

1. 首先创建一个class文件LookModel;
2. 添加类属性: 属性是接口定义返回的;

Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践_第4张图片

3. 实现get set方法:
快捷生成所有属性的set、get方法:

空白处点击 : cmd + n

Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践_第5张图片

4. activity中引用:

type 类型 设为 Model类型:
Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践_第6张图片

5. 给xml控件赋值:

在adapter中直接取get即可。
Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践_第7张图片

效果图:
Android 进阶:JSON数据与Java对象转换 - Gson的使用与实践_第8张图片

github地址:
https://github.com/Dongxk/WeChat-Android.git

你可能感兴趣的:(Android,进阶篇,Android,学习之路,-,进阶篇)