android解析json-gson使用(代码片段)

hequnwang10 hequnwang10     2022-12-13     675

关键词:

Gson是一个第三方解析json的库。需求分析:后端向我们前端传递json时,我们需要解析json然后找到我们想要的值。直接讲解如何使用这个第三方库。

一、安装依赖

implementation 'com.google.code.gson:gson:2.8.6'

二、基础用法

1、创建实体类

Android前端需要创建一个实体类,与后端传递过来的json相对应。这里拿上一篇文章《Android使用OKhttp3实现登录注册功能+springboot搭建后端》的案例分析。比如点击登录之后,后端会传递一个json给前端。

后端实体类R.java

@Data
public class R 
    @ApiModelProperty(value = "是否成功")
    private Boolean success;

    @ApiModelProperty(value = "返回码")
    private Integer code;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "返回数据")
    private Map<String, Object> data = new HashMap<String, Object>();
    

后端返回结果的实体类是这几个值。比如前端登录成功后,我们成功获取了json。结果如下:

D/whq登录: "success":true,"code":20000,"message":"成功","data":"result":"success login"-----------MyResult-------

前端Android实体类ResultGson.java

import java.util.HashMap;
import java.util.Map;

public class ResultGson 
    private Boolean success;
    private Integer code;
    private String message;
    private Map<String, Object> data = new HashMap<String, Object>();

    public ResultGson(Boolean success, Integer code, String message, Map<String, Object> data) 
        this.success = success;
        this.code = code;
        this.message = message;
        this.data = data;
    

    public ResultGson() 
    

    @Override
    public String toString() 
        return "ResultGson" +
                "success=" + success +
                ", code=" + code +
                ", message='" + message + '\\'' +
                ", data=" + data +
                '';
    

    public Boolean getSuccess() 
        return success;
    

    public void setSuccess(Boolean success) 
        this.success = success;
    

    public Integer getCode() 
        return code;
    

    public void setCode(Integer code) 
        this.code = code;
    

    public String getMessage() 
        return message;
    

    public void setMessage(String message) 
        this.message = message;
    

    public Map<String, Object> getData() 
        return data;
    

    public void setData(Map<String, Object> data) 
        this.data = data;
    


这样就将前后端json对应起来了。

2、创建Gson对象

方法一

Gson gson = new Gson();

方法二

Gson gson = new GsonBuilder().create();

相比直接使用构造方法,GsonBuilder创建的方式更灵活,因为它支持对Gson的配置。选择第二个GsonBuilder。

3、将JSON转换为对象

比如拿登录的案例来说,前端返回的json对象为
MyResult

"success":true,"code":20000,"message":"成功","data":"result":"success login"

解析:

String MyResult = response.body().string();
Gson gson = new GsonBuilder().create();
ResultGson resultGson = gson.fromJson(MyResult, ResultGson.class);

这样得到的resultGson 就可以获取json的全部值
resultGson

success=true, code=20000, message='成功', data=result=success login
4、将对象转换为JSON
 Map<String, Object> data = new HashMap<String, Object>();
 data.put("result","success login");
 ResultGson json = new ResultGson(true, 20000, "成功", data);
 Log.d("原始json",json.toString());
 Gson gson1 = new GsonBuilder().create();
 String toJson = gson1.toJson(json);
 Log.d("转化之后的json",toJson);

结果:

D/原始json: ResultGsonsuccess=true, code=20000, message='成功', data=result=success login
D/转化之后的json: "code":20000,"data":"result":"success login","message":"成功","success":true

android之json全面解析与使用(代码片段)

Android之JSON全面解析与使用什么是JSONJSON指的是JavaScript对象表示法(JavaScriptObjectNotation)JSON是轻量级的文本数据交换格式JSON独立于语言(单纯的数据格式,不受语言的约束)JSON具有自我描述性,更易理解... 查看详情

android学习——pull解析方式(代码片段)

在Android中,常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器,其中PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用PULL解析器,今天我来介绍一下PULL解... 查看详情

android逆向使用python代码解析elf文件(pycharm中进行断点调试|elffile实例对象分析)(代码片段)

...le实例对象分析一、PyCharm中进行断点调试在上一篇博客【Android逆向】使用Python代码解析ELF文件(PyCharm中创建Python程序|导入ELFFile库|解析ELF文件)中,使用Python解析ELF文件,重点是了解ELFFile对象的结构,下面开始使用断点调试,查看具体... 查看详情

android开发--使用jsoup解析html页面(代码片段)

在写Android程序时,有时需要解析HTML页面,特别是那类通过爬网站抓取数据的应用,比如:天气预报等应用。如果是桌面应用可以使用htmlparser这个强大的工具,但是在Android平台上使用会出现错误;另一种... 查看详情

android基础知识——使用网络技术(代码片段)

文章目录1.WebView的用法2.使用HTTP协议访问网络2.1使用HttpURLConnection2.2使用OkHttp3.解析XML格式数据3.1Pull解析方式3.2SAX解析方式4.解析JSON数据4.1使用JSONObiect4.2使用GSON5.网络编程的最佳实践5.1HttpURLConnection5.2OkHttp1.WebView的用法有时候我... 查看详情

android:安卓第一行代码学习笔记之解析json格式数据(代码片段)

解析JSON格式数据解析JSON格式数据1、使用JSONObject2、使用GSON解析3、使用实例参考解析JSON格式数据1、使用JSONObject1、首先接收服务器返回的数据privatevoidokHttpRequest()newThread(newRunnable()@Overridepublicvoidrun()tryOkHttpClientclient=newOkHttp... 查看详情

android网络数据json解析使用(建议收藏)(代码片段)

(一)数据请求的准备和分析这里使用的网络中请求的数据,相当于一个完整的app数据这里推荐一个请求json数据的一个平台网站:showapi必须先在平台注册账号,可以使用邮箱注册账号,注册账号后,可以兔费使... 查看详情

android逆向使用python解析elf文件(capstone反汇编elf文件中的机器码数据|创建反汇编解析器实例对象|设置汇编解析器显示细节)(代码片段(代码片段)

文章目录一、创建Capstone反汇编解析器实例对象二、设置Cs汇编解析器显示细节一、创建Capstone反汇编解析器实例对象使用Capstone反汇编框架,首先创建Capstone反汇编解析器对象,即Cs类实例对象;构造函数原型如下:classCs(object):def__init_... 查看详情

android解析服务器响应数据(代码片段)

文章目录Android解析服务器响应数据解析XML格式数据Pull解析方式SAX解析方式解析JSON数据使用JSONObject使用GSON的方式来解析JSON数据Android解析服务器响应数据解析XML格式数据通常情况下,每一个需要访问网络的应用程序都会有一个自... 查看详情

android中webview加载html界面方法与使用和解析一些html字符样式富文本展示图片(代码片段)

Android中webview加载HTML界面方法与使用和解析一些HTML富文本展示,图片溢出解决方法等一、WebViewWebView加载html数据是Android前端比较常用的方法了,解析后端一些字符串等。二、使用步骤代码展示添加网络权限。<uses-permis... 查看详情

android逆向使用python代码解析elf文件(pycharm中创建python程序|导入elffile库|解析elf文件)(代码片段)

文章目录一、PyCharm中创建Python程序二、导入ELFFile依赖库三、解析ELF文件四、博客源码一、PyCharm中创建Python程序在PyCharm的欢迎界面中,点击"NewProject"按钮,开始创建Python工程;选择Python工程安装路径,以及依赖的PythonSDK版本2.7... 查看详情

android使用windowmanager实现悬浮窗及源码解析(代码片段)

本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。使用效果预览Demo结构一个Activity、一个Service和两个布局文件。布局十分简单,这里就不贴了,大概描述下。activity_main.xml中俩按钮,layout_window.xml... 查看详情

android使用windowmanager实现悬浮窗及源码解析(代码片段)

本文已授权微信公众号《鸿洋》原创首发,转载请务必注明出处。使用效果预览Demo结构一个Activity、一个Service和两个布局文件。布局十分简单,这里就不贴了,大概描述下。activity_main.xml中俩按钮,layout_window.xml... 查看详情

insurance项目——与移动端交互json-gson

这是一个java初学者在独立开发一个项目时做的笔记,很多内容仅仅是为了解决当前需求,并未很深入的研究。什么是Json。Json是开发领域数据传递的一种。有着数据结构简单,数据字节长度短等优势。http://www.json.org.cn/ 这里... 查看详情

android逆向使用python解析elf文件(capstone反汇编elf文件中的机器码数据|完整代码示例)★★★(代码片段)

文章目录一、完整代码示例二、执行结果三、博客资源一、完整代码示例使用Python解析ELF文件完整代码示例:#coding=utf-8#解析elf文件需要导入的依赖库#安装pyelftools库成功,安装elftools库会报错fromelftools.elf.elffileimportELFFile#导入Caps... 查看详情

android权限完全解析(代码片段)

Android6.0以后的权限管理发生了很大的改变,不是直接在manifest中添加,而是让用户使用到的时候去动态的申请,Google把权限分了类,当涉及到一些危险的权限的时候必须使用动态申请。权限分类重要方法使用示例... 查看详情

android权限完全解析(代码片段)

Android6.0以后的权限管理发生了很大的改变,不是直接在manifest中添加,而是让用户使用到的时候去动态的申请,Google把权限分了类,当涉及到一些危险的权限的时候必须使用动态申请。权限分类重要方法使用示例... 查看详情

android源码解析sharepreference从使用到原理分析(代码片段)

SharedPreferences是Android提供的数据持久化的一种手段,适合单进程、小批量的数据存储与访问。为什么这么说呢?因为SharedPreferences的实现是基于单个xml文件实现的,并且,所有持久化数据都是一次性加载到内存,如果数据过大,... 查看详情