Gson使用踩坑(json)

GSON转换成Long型变为科学计数法及时间格式转换异常的解决方案 GSON踩坑:对象转换成Map时,Long型变为科学计数法及时间格式转换异常的解决方案 阅读详情

简单记录一下,要睡觉啦

工具类部分代码

public class JSONUtil {
    private static final Gson GSON = new Gson();

    // 静态调用, T是简单类型
    public static <T> T fromJson(String json, Class<T> clz) {
        return GSON.fromJson(json, clz);
    }

    public static String toJsonStr(Object obj) {
        return GSON.toJson(obj);
    }

    public static <T> T fromJson(String json, TypeToken<T> tt) {
        return GSON.fromJson(json, tt.getType());
    }
}

实体类

public class Father {

    private int a = 5;
    private String b = "b";
    private transient List<Integer> c = new ArrayList<>();

    @Override
    public String toString() {
        return "Father{" +
                "a=" + a +
                ", b='" + b + '\'' +
                ", c=" + c +
                '}';
    }
		
		// 为证明与构造无关,这里无参有参的都提供
  	public Father(int a, String b) {
        this.a = a;
        this.b = b;
        c.add(5);
    }

  	public Father() {    }

}

测试代码

    public static void main(String[] args) {
        Father f = new Father(1, "b");
        String s = JSONUtil.toJsonStr(f);
        System.err.println(s);
        Father o = JSONUtil.fromJson(s, Father.class);
        System.err.println(o);
    }

输出结果

{“a”:1,“b”:“b”}
Father{a=1, b=‘b’, c=null}

当把字段c上的关键字transient去掉时,结果如下:

{“a”:1,“b”:“b”,“c”:[5]}
Father{a=1, b=‘b’, c=[5]}

还有很多测试代码,懒得贴了,自己去尝试验证吧

结论如下:
使用transient修饰某个属性时,gson在创建此对象实例时,会将此字段赋空,该过程发生在类的初始化之后。所以,即使类初始化过程中对该字段进行了赋值也是无效的。

JSON转换器,强烈推荐GSON,以及一些踩的坑 前言: 现在很流行前后分离,而我这里是完全的前后分离,后端只需要提供json数据给别人就行,无论是你的前端是开发c/s的还是app的.那么就经常会用到json转换器了,当然也可以凭借自己的能力直接去写一个.   目前我所知的四种json转换器: 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commo... 阅读详情

相关推荐

Java servlet使用GSON返回JSON

1. 首先引入GSON类库到Webapp工程 复制到WebContent/WEB

混迹于移动互联网和手机行业 8404

GSON的使用方法

public class GsonUtil { private static final Gson GSON = new Gson(); public static String toJSONString(Object object) { return object == null ? null : GSON.toJson(object); } public static <T> T parseObject(String text, Clas

一个搬砖工人 545

JSON教程之GSON基本解析(Gson-Java)

https://code.google.com/p/google-gson/downloads/list https://sites.google.com/site/gson/gson-user-guide http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html

楚门的世界 4194

Gson使用说明书

1 Gson的基本用法 Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。 <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency> <groupId>com.google.code.gson</groupId>

一个搬砖工人 1261

Workbench中基于nCode的列车转向架随机振动疲劳寿命预测方法

本文详细介绍了在ANSYS Workbench中结合nCode进行列车转向架随机振动疲劳寿命预测的完整方法。通过几何清理、模态分析、PSD载荷定义及随机振动求解,并重点阐述了nCode中Dirlik等疲劳算法的选择与应用,为轨道交通关键部件的可靠性设计提供了系统的仿真分析流程与工程实践指导。

weixin_29234423的博客 474

【Clickhouse从入门到精通】第51篇:ClickHouse权限管理体系详解

摘要 本文是ClickHouse权限管理系列文章的第51篇,重点解析ClickHouse RBAC权限体系中的GRANT/REVOKE机制。文章详细介绍了GRANT语句的基础语法与权限类型,包括SELECT、INSERT等常规权限以及WITH GRANT OPTION转授权功能。特别深入讲解了列级权限的实现方式,通过SELECT(col1,col2)语法实现字段粒度的访问控制,并展示了权限查询与验证方法。本文还对比了ClickHouse 20.4版本前后权限管理体系的差异,为构建安全的多租户数据平台提供了关

xyghehehehe的专栏 441

Kotlin Json库问题总结(Gson以及Moshi的坑)

前言 其实关于kotlin下json解析的问题我很早就碰到了,直到现在才有时间整理。Android开发中应用最广的json库当属Gson,毫无疑问它是一个非常成熟的库,但是迁移到Kotli...

Android技术之家 3985

EPICS Phoebus手册1

EPICS客户端phoebus 手册

yuyuyuliang00的博客 3964

Gson中fromJson方法的返回值

Gson是google的一个Json库,使用非常简单。在Java中,只要引入包,创建对象就可以用了。 fromJson是Gson提供的一个方法,用来将一个Json数据转换为对象。需要注意的是,它会“尽量”转换出 需要注意的是,调用fromJson时,参数决定了失败的类型:       如果字符串是长度为0的空字符串,那么返回结果是null;               如果提供的字

anod的专栏 4万+

AEB(自动紧急制动)

AEB系统对静止物体的误判率受多种因素影响,包括传感器精度、算法复杂性以及环境条件等。通过多传感器融合、算法优化、硬件升级以及环境适应性增强等技术手段,可以有效减少误判问题。美国和欧洲的AEB法规均强调了技术性能和安全性,但具体要求有所不同。美国的NHTSA规定更注重高速和复杂场景下的紧急制动能力,而欧盟的ECE R152法规则更侧重于基础的AEB功能覆盖范围。

百态·数智思维 | 聚焦大数据、量化与未来AI 2551

【Unity3D框架】GameFramework框架完全教程《全网最全》-专栏文章目录

最近准备学习框架,了解到GameFramework框架是国产Unity3D框架,准备学习一下,但是奈何全网关于这个框架的教程实在太少。为了让自己学习方便一些,也为了让后来者乘凉。将框架以自己的理解整理目录,并且补全教程。觉得教程有帮助别忘了一键三连哦。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2万+

gson解析json maven_json使用过程踩过的一些坑

JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。Java是面向对象的语言,所以我们更多的在项目中是以对象的形式处理业务的,但是在传输的时候我们却要将对象转换为 JSON 格...

weixin_31832223的博客 514

14、固态变压器(SST)供电的直流微电网控制策略解析

本文详细解析了基于固态变压器(SST)供电的直流微电网的分层功率管理与控制策略。重点介绍了二次控制和三次控制算法的原理及实现方式,探讨了将SST作为固态同步电机(SSSM)的控制概念及其频率调节方法。通过小型直流微电网的实验案例验证了控制策略的有效性,并对不同三次控制方法的优缺点进行了比较。最后,文章提出了未来控制策略的优化方向,包括通信技术提升、多目标优化和智能算法的应用,为直流微电网的可靠、高效运行提供了理论支持和实践指导。

star的博客 554

使用GSON解析JSON数据

GSON是谷歌提供的一个开源库,可以用来解析JSON数据 不过GSON并没有被添加到Android官方的API中,所以如果要使用这个开源库,我们就要先添加依赖,编辑app/build.gradle文件,在dependencies闭包中添加如下内容: implementation 'com.squareup.okhttp3:okhttp:4.0.1' implementation 'co...

冰之沁泠的博客 1万+

基于MATLAB开发AUTOSAR软件应用层模块-part3.自动生成的代码文件介绍

上篇文章我们介绍了如何设计一个简单的模型,之后自动生成autosar架构的代码,这篇文章我带大家看下,生成了哪些文件,以及这些文件的内容。 生成的文件见下图: model files是模型控制逻辑部分代码,包括 DEMO1.c DEMO1.h DEMO1_private.h DEMO1_types.h DEMO1.c 1 /* 2 * File: DEMO1.c 3 * 4 * Cod.

汽车软件开发 1978

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java——使用GSON对JSON进行解析 教程

GSON GSON是Googel公司开发的用于解析json的类库。可以很轻松地让程序员将java对象转换成JSON格式,或者将JSON格式的对象转换成Java对象。 使用方法很简单: 首先,需要将GSON类库的jar包引入到自己的IDE中,本教程使用IDEA为例子。 1.下载GSON的jar包 GSON的github地址:https://github.com/google/gson/ GSON的下载地址:https://search.maven.org/artifact/com.google.c

连长少尉 6649

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Eclipse安装GSON,使用GSON转换Java Object到JSON

标题在eclipse里安装GSON创建一个对象并转换成JSON 在eclipse里安装GSON 从这里选择合适的GSON版本,下载GSON的jar文件:https://repo1.maven.org/maven2/com/google/code/gson/gson/ 保存jar文件到本地目录 选中project点击鼠标右键,选择"Build Path" -> “Configure Build Path” 选择"Java Build Path", 打开"Libraries",把jar文

weixin_42325834的博客 2039

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SpringBoot中使用Gson处理JSON

一、GSON简介 GSON是Google公司提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。 Gson特点如下: 快速、高效 代码量少、简洁 面向对象 数据传递和解析方便 Gson依赖如下: <dependency> <groupId>com.g...

Mango的博客 6916

Android中使用GSON包解析JSON数据(简单JSON)

之前一直使用Java自带的JSONObject,JSONArray来进行解析,在JSON嵌套不多,数据不大的时候还是不错的。但是对于大量的JSON数据来说,效率就比较低了。Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。使用了面向对象的思想,提高了JSON解析的效率。        需要解析的JSON数据如下(JSON数据我保存为"languages.js

乞力马扎罗的雪CYF的博客 4141

Android中使用GSON包解析JSON数据(复杂JSON)

之前讨论过用GSON解析较为简单的JSON,这次稍微增加一点难度。把JSON弄的复杂一点,使JSON变为2层嵌套,并增加了一些其他元素。代码中把language.json放到assets文件夹下,把GSON.jar放到libs文件夹下。如果用的是Android Studio,需要右键GSON,jar,选择Add As Lirbary,否则AS不能识别。Eclipse中不需要这个步骤。具体解析以下三

乞力马扎罗的雪CYF的博客 4837

gson生成jsonobject_GSON搞定JSON数据

GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。特点:a、快速、高效b、代码量少、简洁c、面向对象d、数据传递和解析方便Gon介绍com.google.code.gsongson2.8.0Gson的创建方式Gson gson = new gson();通过GsonBuilde...

weixin_39890102的博客 3239

GSON 操作JSON数组

关于GSON的入门级使用,这里就不提了,如有需要可以看这篇博文&amp;nbsp;《Google Gson的使用方法,实现Json结构的相互转换》&amp;nbsp;,写的很好,通俗易懂。 我为什么写这篇文章呢?因为前几晚跟好友&amp;nbsp;xiasuhuei321&amp;nbsp;探讨了一下GS...

LZJWXJ树袋熊 1344

使用 Gson 解析 Json

Gson 解析 JSON:你可以使用方法将 JSON 字符串解析为 Java 对象,使用方法将 Java 对象转换为 JSON 字符串。处理嵌套数据:当 JSON 中包含数组或嵌套对象时,你可以使用集合类(如List<T>)或定义嵌套的 Java 类来映射 JSON 数据。泛型类型解析:使用TypeToken来处理带有泛型参数的类型(如List<T>Gson 是一个非常灵活且强大的库,广泛应用于 Android 和 Java 项目中,特别适合进行 JSON 数据与 Java 对象之间的转换。

2402_85226471的博客 1272

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的专栏 4009

Gson在使用时怎么对JSON容错处理

序 “JSON是一种具有自描述的、独立于语言的、轻量级文本数据交换格式,经常被用于数据的存储和传输。而GSON可以帮我们快速的将JSON数据,在对象之间序列化和反序列化。” GSON 的toJson()和fromJson()这两个方法,是GSON最基本的使用方式,它很直观,也没什么好说的。但当被问及GSON如何对JSON数据容错,如何灵活序列化和反序列化的时候,就有点抓瞎了。 JSON数据容错,最简单的方式是让前后端数据保持一致,就根本不存在容错的问题,但是现实场景中,...

Dream It Possible 2575
上一篇: JmsTemplate发送消息
下一篇: linux之root用户,以及命令sudo与su
MrMoving
博客等级 码龄10年 54粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值