Android Gson解析json

article/2025/10/21 2:08:50

前言:

  • 解析json的库有很多,如:JSON-Java、Gson、Jackson、FastJson…
  • 而Gson是谷歌的,相信自有它的好处

简介

  • 用于json与java对象之间的转换
  • 通过 序列化和反序列化 实现
  • 功能强大,稳定性也好

使用

  • Gson提供了两个方法,可实现json对象与java对象之间的转换
方法解析
toJson()序列化:将java对象转换为json对象,生成json类型的数据
fromJson()反序列化:将json对象转换为java对象,解析json类型的数据

使用步骤

(准备工作)

引入库
compile 'com.google.code.gson:gson:2.8.5'

创建Gson对象

Gson gson=new Gson();

序列化(单个)

  1. 准备好要序列化的数据(单个)
data data1=new data();
data1.setAge(18);
data1.setName("君莫笑");
  1. 序列化
String json=gson.toJson(data1);
  1. 将结果显示到TextView上

在这里插入图片描述

序列化(多个)

  1. 准备好要序列化的数据(多个)
List<data>list=new ArrayList<data>();data data1=new data();
data1.setAge(18);
data1.setName("君莫笑");
list.add(data1);data data2=new data();
data2.setAge(4);
data2.setName("我已经不是3岁小孩了");
list.add(data2);
  1. 序列化
String json=gson.toJson(list);
json = gson.toJson(list);
  1. 将结果显示到TextView上
TextView tv=(TextView) findViewById(R.id.mainTextView1);
tv.setText(json);

效果图:
在这里插入图片描述

补:data.java

public class data
{String name;int age;public void setAge(int age){this.age = age;}public int getAge(){return age;}public void setName(String name){this.name = name;}public String getName(){return name;}
}

反序列化(单个)

  1. 准备要反序列化的数据(单个)
    (直接引用上面的数据了)
data data1=new data();
data1.setAge(18);
data1.setName("君莫笑");
Gson gson=new Gson();
String json=gson.toJson(data1);
  1. 反序列化
data mydata=gson.fromJson(json,data.class);
  1. 将结果显示到TextView上
tv.setText("age="+mydata.getAge()+"   name="+mydata.getName());

在这里插入图片描述

反序列化(多个)

  1. 准备要反序列化的数据(多个)
    (直接引用上面的数据了)
List<data>list=new ArrayList<data>();
data data1=new data();
data1.setAge(18);
data1.setName("君莫笑");
list.add(data1);data data2=new data();
data2.setAge(4);
data2.setName("我已经不是3岁小孩了");
list.add(data2);
String json = gson.toJson(list);
  1. 反序列化
StringBuffer stringbuffer=new StringBuffer();
data[]mydata= gson.fromJson(json,data[].class);	
for(int i=0;i<d.length;i++){stringbuffer.append("age="+d[i].getAge()+"   name="+mydata[i].getName()+"\n");
}
  1. 将结果显示到TextView上
tv.setText(stringbuffer);

在这里插入图片描述

进阶

我们理想中的json

[{"age": 18 ,"name": "君莫笑"} ,{"age": 4 ,"name": "我已经不是3岁小孩了"}
]

现实中的json

{"一班": {"优秀生": [{"age": 18 ,"name": "君莫笑"} ,{"age": 4 ,"name": "我已经不是3岁小孩了"}]"差等生": [{"age": 26 ,"name": "把酒一杯"} ,{"age": 12 ,"name": "以我为王"}]}"二班": {"优秀生": [{"age": 15 ,"name": "小魔仙"} ,{"age": 999 ,"name": "巫女"}]}
}

解析json

json的数据有很多,但我们只需要解析我们需要的部分,具体如下:

String myjson=new JSONObject(json).getJSONObject("一班").getJSONArray("优秀生").toString();
StringBuffer stringbuffer=new StringBuffer();
data[]mydata= gson.fromJson(myjson,data[].class);	
for(int i=0;i<mydata.length;i++){stringbuffer.append("age="+mydata[i].getAge()+"   name="+mydata[i].getName()+"\n");
}

将结果显示到TextView上

tv.setText(stringbuffer);

在这里插入图片描述


http://chatgpt.dhexx.cn/article/GAcAKlEX.shtml

相关文章

Android 使用 Gson 解析 json 数据及生成

1.导入 Gson 包 第一种导入Gson 包的方式 在 app 文件下的 build.gradle 文件 导入 gson:2.9.1 包 implementation com.google.code.gson:gson:2.9.1第二种导入Gson 包的方式 直接去下载最新的 Gson 包 下载链接&#xff1a;gson.jar 选择最新的包进行下载 将下载的 gson…

用Gson解析json

首先我们需要导入gson的jar包&#xff0c;因为gson解析方法不是java官方的而是谷歌提供的。 一.把json数据转成java对象 首先因为已经手动导入了jar包&#xff0c;现在只需创建解析器对象&#xff0c;当然首先得有一个json类型的文件地址&#xff0c;和文件输出流 第二步调用…

Android --Gson解析json数据

Android --Gson解析json数据 private void analyseJson() throws Exception {InputStream isgetAssets().open("dataTest.json");ByteArrayOutputStream baosnew ByteArrayOutputStream();byte[] bytesnew byte[1024];int len;while ((lenis.read(bytes))!-1){baos.…

Gson解析json字符串

Gson 怎样使用gson把一个json字符串解析成一个jsonObject对象 因此我要把上面的fastjson转换成是gson&#xff0c;如下图&#xff1a; JsonObject object new JsonParser().parse(result).getAsJsonObject();怎样从gson中取出键的值 使用gson把json字符串转换成一个list集合 …

使用Gson解析Json数据

目录 一、Gson介绍 二、使用方法 完整代码&#xff1a; MainActivity: 布局&#xff1a; 运行结果&#xff1a; 一、Gson介绍 Gson是Google提供的一个Java库&#xff0c;用于将Java对象转换为JSON格式数据或将JSON格式数据转换为Java对象。 常用方法&#xff1a; 方法名…

用GSON解析Json格式数据

GSON是谷歌提供的开源库&#xff0c;用来解析Json格式的数据&#xff0c;非常好用。如果要使用GSON的话&#xff0c;则要先下载gson-2.2.4.jar这个文件&#xff0c;如果是在Android项目中使用&#xff0c;则在Android项目的libs目录下添加这个文件即可&#xff1b;如果是在Java…

Gson解析JSON

1.介绍 Gson是Google提供的处理JSON数据的Java类库&#xff0c;主要用于转换Java对象和JSON对象。 2.依赖 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency><groupId>com.google.code.gson</groupId><artifac…

python 学习笔记—— #(井号)的作用

在Python语言中&#xff0c;经常看到#后面跟着一些文字。#的作用就是注释&#xff0c;用于解释代码是怎样的逻辑或者作用&#xff0c;方便自己或者别的程序员阅读代码时能够理解代码的意义。 例如 &#xff1a; 我们可以看到# &#xff08;井号&#xff09;跟着的文字是不会被程…

vue 输入网址后,url中自动出现井号#,如何去除

问题描述&#xff1a; 解决方法&#xff1a; 1.打开 2.找到 3.删除Hash 4.成功

URL中#号(井号)的作用

今天又看到了一篇非常好的来自HTTPWatch的文章&#xff0c;不得不推荐给大家。 1. 井号在URL中指定的是页面中的一个位置 井号作为页面定位符出现在URL中&#xff0c;比如&#xff1a;http://www.httpwatch.com/features.htm#print &#xff0c;此URL表示在页面features.htm中p…

StartUML 画类图操作大全

文章目录 基本用法新建项目添加模型添加类图修改项目、模型、类属性配置项目Profile添加类图添加类属性其余Tool的用法 进阶用法枚举方法/属性的类型方法返回值方法/属性的属性方法/属性的静态属性 最后 基本用法 新建项目 打开StartUML&#xff0c;选择Empty Project&#xff…

StarUML使用教程【画类图】

1.打开StarUML 打开后&#xff0c;默认就是画类图的模式 默认创建了一个untitled项目 2.修改工程名字 ** 鼠标双击** 【Untitled】 在这里进行填写相关信息 修改后&#xff0c;就变成了你修改的那个名字 3.创建类图 右键 右侧的名字&#xff0c;选择Add Diagram—>Class…

Idea怎么实现画类图

1.【file】-【Settings】-【Tools】-【Diagrams】-勾选Java Class Diagram的选项 2.右击类&#xff0c;【Diagrams】-【Show Diagram】

使用mermaid画类图

使用mermaid画类图 文章目录 使用mermaid画类图1.类与类之间的关系2.各种关系的强弱顺序 1.类与类之间的关系 mermaid类图关系语法 泛化&#xff08;Inheritance&#xff09; 一种继承关系&#xff0c;表示一般与特殊的关系&#xff0c;它指定了子类如何特化父类的所有特征和…

UML类图

一、类的属性的表示方式 在UML类图中&#xff0c;类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示&#xff0c;比如下图表示一个Employee类&#xff0c;它包含name,age和email这3个属性&#xff0c;以及modifyInfo()方法。 那么属性/方法名称前加的加号…

EA enterprise architect 画类图

准备工作 新建文件&#xff0c;参考画用例图的新建文件 画类图 以此为例 画类 工具箱&#xff0c;选中calss->class拖拽到左侧&#xff0c;填写类名 右键点击创建的类&#xff0c;选择功能与属性。属性类似于变量&#xff0c;功能类似于函数。为类添加属性和功能。 …

使用PlantUml插件画类图

一、PlantUml简介二、类与类之间关系汇总整理三、PlantUml类图语法介绍四、类图五、类图 PlantUml 代码 本文介绍如何使用 PlantUml 插件来画 Uml 图 一、PlantUml简介 PlantUML 是一个可以快速编写各种图表的工具&#xff0c;可以通过安装 Intellij Idea 或者 Vs Code 插件来…

UML类图画法全程解析

本节向大家介绍一下UML类图画法&#xff0c;主要包括UML类图元素和关系画法&#xff0c;希望通过本文的介绍&#xff0c;你对UML类图画法有一定的认识。 软件设计起步&#xff1a;UML类图画法 学习设计模式&#xff0c;画UML类图是基础&#xff0c;通过UML类图&#xff0c;能…

使用StarUML画类图

原文链接&#xff1a;http://www.flyne.org/article/379 staruml比rational rose小多了&#xff0c;觉得也很实用&#xff0c;似乎免费 1、综述&#xff08;What&#xff09; StarUML是一种生成类图和其他类型的UML图表的工具。本文是一个使用StarUML创建类图(Java语言描述)的简…

IDEA画UML类图

第一步(IDEA下载画图插件) PlantUML Integration 插件可以支持画图 第二步(创建类图文件) 点击之后会让选择 选择class即可 类图的语法 在画类图的时候分为五种 1. 依赖 依赖分为好多种&#xff0c; 作为成员变量&#xff0c;作为方法的入参和出参&#xff0c;在类中使用…