Java4Android之Gson

android4.4 retrofit2 java.lang.NoSuchMethodError: com.google.gson.Gson.newJsonReader W/System.err(11368): java.lang.NoSuchMethodError: com.google.gson.Gson.newJsonReader W/System.err(11368): at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:37) W/System.err(11368): at retrofit2.converter.gson 阅读详情

一般而言,我们通过http请求传送数据,采用json数据传输。如何解析json,一个我们用的库是Gson。我引用一个入门的例子在此,作为学习范本。在后续的相关代码中,其实是会使用到的。

参考及转载:

http://www.cnblogs.com/chenlhuaf/archive/2011/05/01/gson_test.html

http://blog.sina.com.cn/s/blog_64e467d60101ibpd.html


使用Gson进行解析:下载google-gson-2.2.2-release.zip包。

包含两种主要操作:一种是将对象或者不同的内容转化为JSON格式,一种是将JSON格式的内容还原到相应的对象属性或者其他属性。

1、首先使用:Gson gson = new Gson();  创建gson对象

2、要把数据转化为JSON格式时,可以在新建一个JavaBean类:

public class Person {

    private String name;

    private int age;

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    @Override

    public String toString() {

        return name + ":" + age;

    }

}

 

在主函数中使用如下语句:

Person p = new Person();

p.setAge(22);

p.setName("Curry");

persons.add(p);//将Person对象加入到gson中

String str = gson.toJson(p);

 

直接输出,得到以下结果:{"name":"Curry","age":22}

 

而当在gson中加入list类型的对象时:

List persons = new ArrayList();

for (int i = 0; i < 3; i++) {

        Person p = new Person();

        p.setName("name" + i);

        p.setAge(i * 5);

        persons.add(p);

    }

String str = gson.toJson(persons);

将输出以下结果:(格式是数组类型的)[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10}]

 

HashMap tool = new HashMap();

tool.put("ID", "22");

String str = gson.toJson(tool);

以上表示加入的对象本身就是Map类型的,则输出以下结果:{"ID":"22"}

 

而如果加入的JavaBean中还包括其他的List类型的数据,例如:(代码片段)

public class Person {

    private String name;

    private int age;

    private ArrayList car;

则输出结果变成这样:

[{"name":"name0","age":0,"car":["cc","ford"]},{"name":"name1","age":5,"car":["cc","ford"]},{"name":"name2","age":10,"car":["cc","ford"]}]

1、   解析JSON对象,将其还原为JavaBean,或者相应的数据类型

String json = "{\"name\":\"Duke\",\"address\":\"Menlo Park\",\"dateOfBirth\":\"Feb 1, 2000 12:00:00 AM\"}";//JSON格式的数据

Gson gson = new Gson();

Student student = gson.fromJson(json, Student.class);//指定了要还原的class,保存在gson中。

System.out.println("student.getName()  = " + student.getName());

System.out.println("student.getAddress() = " + student.getAddress());

System.out.println("student.getDateOfBirth() = "

                + student.getDateOfBirth());//可以直接从student对象中获取到所有数据了。

 

4、如果Json对象本身是List形式的,或者其他的类型,则采用以下方法:

可以借助TypeToken获取泛型参数的类型。

String json = "[{\"name\":\"Duke\",\"address\":\"Menlo Park\",\"dateOfBirth\":\"Feb 1, 2000 12:00:00 AM\"}]";

Gson gson = new Gson();

//使用Type类,取得相应类型对象的class属性。

Type listType=newTypeToken<ArrayList<Student>>(){}.getType();//TypeToken内的泛型就是Json数据中的类型

        ArrayList list = gson.fromJson(json, listType);//使用该class属性,获取的对象均是list类型的

        System.out.println("student.getName()  = " + list.get(0).getName());//从list中取得内容即可

        System.out.println("student.getAddress() = " + list.get(0).getAddress());

        System.out.println("student.getDateOfBirth() = "

                + list.get(0).getAddress());

 

 

因此,无论是把对象转化为Json格式,还是把Json格式还原为对象时,都需要确定好相应的数据类型或者 JavaBean的格式。这样就可以很方便的使用Gson进行转化了。

【vivado PG学习】1 PG168:7 Series FPGAs Transceivers官方配置方法学习笔记 介绍: The 7 series FPGAs Transceivers Wizard LogiCORE™ IP 自动创建配置7系列fpga 收发器的HDL封装。向导可以配置一个或多个支持行业主流标准的高速串行收发器。或者从零开始支持各种自定义协议。 功能: 创建配置7系列fpga 收发器的HDL封装。 自动对模拟设置进行配置。 预定义了提供Aurora 8B/10B, Aurora 64B/66B, CEI-6G,DisplayPort, Interlaken, Open Base StationAr.. 阅读详情

相关推荐

从晶体管到触发器:为什么芯片设计必须区分同步/异步复位?

本文深入探讨了芯片设计中同步复位与异步复位的物理本质与工程权衡。从晶体管级的CMOS结构出发,剖析了两种复位方式在物理实现、时序可靠性(如建立/保持时间、恢复/移除时间)上的根本差异,并分析了在不同应用场景下的选择策略。文章强调,理解复位信号的底层机制对于确保芯片时序收敛、系统上电确定性及整体鲁棒性至关重要。

time3的博客 221

Android程序 依赖库引用Gson 报java.lang.NoClassDefFoundError: com/google/gson/Gson 解决方法...

Android 程序所依赖一个Library程序B , B 程序中用到格式化json串,转换成标准json串的要求 public static String jsonFormatter(String uglyJSONString) { Gson gson = new GsonBuilder().setPrettyPrinting().create(); JsonParser jp =...

dawuafang 706

LMX2820即时校准实战:从失锁到稳定锁频的完整指南

本文详细解析了LMX2820锁相芯片在高频段(11.3-22.6GHz)易出现随机失锁问题的根源,并提供了即时校准(InstCal)的完整实战指南。通过寄存器编程、Index例程和校准配置的关键步骤,确保从失锁到稳定锁频的高可靠性,大幅提升射频合成器在通信与测试测量应用中的性能。

bert9linguist的博客 960

Invalid indirect reference 0x41e0cba8 in decodeIndirectRef

10-08 11:20:13.636: W/dalvikvm(9450): Invalid indirect reference 0x41e0cba8 in decodeIndirectRef 10-08 11:20:13.636: I/dalvikvm(9450): "main" prio=5 tid=1 RUNNABLE 10-08 11:20:13.636: I/dalvikvm(9450)

浅浅徘徊的博客 1662

用GraphPad Prism直出单细胞亚群堆叠柱状图

用GraphPad Prism直出单细胞亚群堆叠柱状图

fivehuge的博客 4197

用blender为模型贴图并在gazebo中显示

用blender为模型贴图并在gazebo中显示 首先我用的是最新的blender2.92版本,附上链接https://www.blender.org/download/。并设置好简体中文。语言可以在编辑->偏好设置->界面里面设置。 首先界面右上角的摄像头,方块,灯光三个场景全都删除。 接着导入stl格式的模型文件,下面以tianbot_mini上面的激光雷达的模型为例。 导入激光雷达模型后,点击进入上方的UV Editing按钮进入UV编辑界面 此时我面看见网格化的激光雷达模型

qq_48427527的博客 8001

android系统源码中引用第三方jar包

如要在PMS中引用第三方的JAR包也是可以做到的(不建议这样) 在/android4.4/frameworks/base/services/java的Android.mk文件中做如下修改: LOCAL_PATH:= $(call my-dir) # the library # =========================================================

kingofwlh的专栏 1096

VIVADO中的IP核在MATLAB中仿真

VIVADO中的IP核在MATLAB中仿真项目简述VIVADO建立FFT IP核MATLAB调用FFT IP核 项目简述 我们都会用MATLAB进行算法验证,但是经常会发现如果VIVADO中调用了IP核,那么最终会发现VIVADO与MATLAB之间的数据不可以统一的对应起来。那么,MATLAB验证的效果就会大大下降,那么可不可以想办法将VIVADO中的IP核封装成一个函数在MATLAB中调用呢?答案是可以的。这篇博客主要以FFT的IP核为例讲解封装成一个函数并且成功在MATLAB中调用。 本次实验所使用的软

zhangningning1996的博客 6992

GSON 在 android 4.2 抛 StackOverflowError 错误

GSON 1.7.1版本替换掉2.2.2版本就解决了 根本的问题还是没有找到 12-08 17:42:45.907: E/AndroidRuntime(19759): FATAL EXCEPTION: main 12-08 17:42:45.907: E/AndroidRuntime(19759): java.lang.StackOverflowError 12-08 17:42:45.

1166

【异常】OpenClaw 项目 `fetch failed` 报错问题排查与解决方案Response interrupted: TypeError: fetch failed

针对无超时控制、异常兜底缺失导致的请求中断,封装标准化的安全请求工具,一次性解决超时控制、异常捕获、日志埋点三大问题,全项目替换原生。:将项目运行的 Node.js 版本升级至 18.x 及以上 LTS 版本,使用 Node.js 内置的稳定版。实现的网络请求环节,包括但不限于:第三方开放接口调用、内部服务接口通信、跨域资源请求、外部配置拉取等场景。:针对无法升级 Node.js 版本的存量环境,通过社区稳定兼容包替换原生。类型异常,直接造成业务请求响应中断。第二步:业务代码改造,替换原生。

奶爸的编程之路,也就一周冷个三天 367

从零开始:手把手教你设计人形机器人锂电池供电系统

人形机器人要像人类一样“活起来”,必须有稳定的“能量血液”——供电系统。本文聚焦锂电池供电系统如何根据机器人功耗选择合适的锂电池参数(容量、电压、放电倍率);如何设计电池管理系统(BMS)保护电池安全;如何解决机器人运动时的“瞬时大电流”供电难题;如何通过硬件电路和代码实现供电系统的监测与控制。用“机器人小助手的能量危机”故事引入锂电池供电系统;拆解锂电池核心参数(容量、电压、放电倍率)和供电系统三大组件(电池组、BMS、电源转换模块);

AI天才研究院 1759

Android JSON解析性能对比:Moshi比Gson快多少?从原理到实践的全方位解析

基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。架构理解:掌握实时语音应用的完整技术链路(ASR→LLM→TTS)技能提升:学会申请、配置与调用火山引擎AI服务定制能力:通过代码修改自定义角色性格与音色,实现“从使用到创造”从0到1构建生产级别应用,脱离Demo,点击打开。

2600_94960142的博客 335

YOLOv11改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv11的模型配置文件在中,里面包含以及,本文以目标检测模型文件为例(其他文件完全一致),详细介绍一下YOLOv11模型文件中各参数的含义。

Limiiiing的博客 5313

偶的Android 视频学习之路

//步骤2.2:通过AlertDialog弹出对话框,并且在第一个button,即PositiveButton监听事件,触发操作 new AlertDialog.Builder(this) .setTitle("添加框") .setView(addView) .setPositiveButton("确定", new DialogInterface.OnClickListener() {

ymangu的专栏 1313

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android studio testng,如何配置Appium和Android Studio?

我建议您使用IntelliJ IDEA。您可以使用gradle创建项目,您可以在其中插入依赖关系,但可以通过文件 - >项目结构 - >库 - >(+) - > Java来包含easly .jars,然后选择您的.jar文件。IntelliJ IDEA已经安装了testNG,因此您不必安装它。为了测试所有你需要的是gson-2.2.2,java-client-4.0.0,s...

weixin_34050162的博客 234

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

xxxxxxxxxxxxxxxxxxxxx已转行

1.添加Retrofit2依赖 教程链接

云端马匪的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

安卓开发Gson插件的使用

5. 处理复杂对象:如果你的对象具有嵌套或复杂的结构,可以使用 Gson 的注解来控制序列化和反序列化的行为。4. 使用 Gson 进行反序列化:要将 JSON 字符串反序列化为 Java 对象,可以使用 Gson 的 fromJson 方法。3. 使用 Gson 进行序列化:要将 Java 对象序列化为 JSON 字符串,可以使用 Gson 的 toJson 方法。在上述示例中,我们创建了一个名为 Person 的类,并使用 Gson 进行了序列化和反序列化的操作。// 创建一个 Person 对象。

lxl12138的博客 1384

gson 安卓 java_Android中Gson的使用

Android中Gson的使用1 简介Gson是一个Java库,作用是将Java对象转换成它对应的JSON表示。开源的JSON解析库有好几个,例如Jackson就是一个很有名的XML/JSON解析库。Gson与这些库的不同之处,表现在它的两个重要设计目标:即使你无法修改源代码,你也能通过Gson对代码中的类做解析和变换。充分支持Java泛型。在学习过程中我们能发现,第一点很好理解,并且也简化了对G...

weixin_39807541的博客 423

Android Gson总结

Gson是一个Java库,用于将Java对象序列化为JSON格式,或将JSON格式反序列化为Java对象。

xiangxiongfly 3712

gson 安卓 java_Android使用Gson的总结

先说一下gson的使用方法,可以参考这篇帖子,写的很详细,感谢作者,以下内容是根据原作者帖子进行总结的自己的笔记简要总结Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。同时每个方法都提供了重载方法,我常用的总共有5个。Gson gson = new Gson();int i = gson.fromJson("100", in...

weixin_28756833的博客 492

gson 安卓 java_gson使用在android使用例子

Java代码 虽然android自带了json处理,但是没有封装,总觉得不方便,网上找了gson的处理,觉得还行。虽然android自带了json处理,但是没有封装,总觉得不方便,网上找了gson的处理,觉得还行。Java代码 //转换器GsonBuilder builder = newGsonBuilder();// 不转换没有 @Expose 注解的字段builder.excludeFie...

weixin_39574050的博客 177

在Android Studio中如何添加GSON 并使用GsonFormat快速实现实体类

方法一: 1.在Android Studio中按F4快捷键进入Project Structure 2点击+号 . 3.选择Library dependency 4.搜索GSON 5.添加进去 方法二: 在buil的.gradle中输入 compile 'com.google.code.gson:gson:2.6.2' ------------------------

xin917480852的博客 7万+

Android之使用GSON解析JSON数据

GSON简介:GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。GSON可以很容易的将一串JSON数据转换为一个Java对象,或是将一个Java对象转换为相应的JSON数据。使用GSON解析JSON数据的基本步骤:1.导入jar包 gson.jar可点击右侧获取获得:gson-2.2.4.jar jar包导入方法可参考我的另一篇博客:AndroidStudi

ygd1994的专栏 4008

android找不到Retrofit的GsonConverterFactory.create()

一般就应该是依赖问题吧~加入这行依赖应该就ok了 implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

ShiXinXin_Harbour的博客 1264

安卓常用第三方框架-Gson

Gson简介 json因其轻量、高效等特性,而被广泛用作移动开发的信息交互的载体。 我们知道AndroidSDK提供了org.json工具包来解析Json数据,但是仍然避免不了解析过程中的一系列重复工作。所以就出现了许多第三方JSON解析框架。JSON官方网站也给我们列出了在各种语言中JSON的解析策略: 可以看到java语言中解析JSON的库有很多,但由于移动设备硬件与软件等各方面的因...

优快云文章已停止维护,后续文章会在 https://blog.hufeifei.cn 持续更新 1491

android Gson 实体

学习如何在Android中使用Gson进行实体转换 在Android开发中,Gson是一个用于在Java对象和JSON数据之间转换的库。使用Gson,可以将Java中的实体类对象轻松转换为JSON格式,并且还可以将JSON数据解析成Java对象。以下是实现Gson实体转换的基本流程: 步骤 说明 1 添加Gs...

weixin_41129005的博客 165
上一篇: 祝2014中秋快乐
下一篇: Java4Android之httpclient学习与应用
minimicall
博客等级 码龄18年 407粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值