Google GSON应用 - gson进行日期转换及解析数组

以下是相关伪代码

1. 构建Gson对象的时候指定相关的日期格式:

private static Gson gson = new GsonBuilder().registerTypeAdapter(Date.class,
   new UtilDateSerializer()).registerTypeAdapter(Calendar.class,
   new UtilCalendarSerializer()).registerTypeAdapter(GregorianCalendar.class,
   new UtilCalendarSerializer())
   .setDateFormat(DateFormat.LONG).setPrettyPrinting()
   .create();

 2. 将Object转换为Json String

 public static String bean2json(Object bean) {
      return gson.toJson(bean);
 }

 

 3. 将Json转换为Object

 public static <T> T json2bean(String json, Type type) {
      return gson.fromJson(json, type);
 }

 

4.1、日期处理(Date)

private static class DateSerializerUtil implements   JsonSerializer<Date>,JsonDeserializer<Date> {

  @Override
  public JsonElement serialize(Date date, Type type,
    JsonSerializationContext context) {
   return new JsonPrimitive(date.getTime());
  }
  
  @Override
  public Date deserialize(JsonElement element, Type type, JsonDeserializationContext context)
    throws JsonParseException {
   return new Date(element.getAsJsonPrimitive().getAsLong());
  }

 }
 
 

 

4.2、日期处理(Calendar)

private static class DateSerializerUtil2 implements JsonSerializer<Calendar>,JsonDeserializer<Calendar> {

  @Override
  public JsonElement serialize(Calendar cal, Type type,
    JsonSerializationContext context) {
   return new JsonPrimitive(Long.valueOf(cal.getTimeInMillis()));
  }

  @Override
  public Calendar deserialize(JsonElement element, Type type,
    JsonDeserializationContext context) throws JsonParseException {
   Calendar cal = Calendar.getInstance();
   cal.setTimeInMillis(element.getAsJsonPrimitive().getAsLong());
   return cal;
  }
  
 }

 

 

 5、解析Json 数组型的字符串

 

 
 JsonArray jsonarray = new JsonParser().parse(jsonOrXmlData).getAsJsonArray("TopAds");
   for (int i = 0; i < jsonarray.size(); i++) {
             JsonObject obj = jsonarray.get(i).getAsJsonObject();
             System.out.println(obj.get("HeadLine"));
         }

 

Gson库的两个版本深度解析与实战应用 Gson是Google提供的一个开源库,主要功能是实现Java对象和JSON数据之间的相互转换。它能够自动处理Java对象的序列化与反序列化,无需手动编写代码将对象与JSON格式数据进行转换,极大地简化了开发过程。在Java项目中,Gson库不仅仅提供了基础的数据序列化和反序列化功能,它还通过注解、类型适配器以及自定义序列化/反序列化机制,进一步提高了开发的灵活性和效率。本章节将深入探讨这些高级特性的重要性以及如何在项目中有效地运用它们。 阅读详情

相关推荐

深入解析Gson数据处理技术包

本文还有配套的精品资源,点击获取 简介:Gson是Google开发的Java库,用于在Java对象和JSON数据间映射,便于在Android开发中解析和生成JSON数据。通过使用Gson库,开发者能够方便地将Java对象转换为JSON字符串,或者将JSON字符串反序列化为Java对象,从而简化了服务器与客户端间的数据交换。Gson库支持各种Java类型、提供自定义类型转换、...

weixin_42502040的博客 1459

Gson,FASTjson 解析字符串为数组,日期等方式

混淆打包.1 java 是既需要 解释 也需要编译 执行 .2 变量名 不是给 机器看的(在字节码文件中可以找到哦),这些方法名变量名对执行完全无用是程序员看的,class 中行号,把java语句编程字节码文件,这些发生语句在哪一行都会标出,混淆就是将这些删掉,类名等全删掉, jvm 解释型 直接用内存地址引用的话可读性太差 class 中对执行 完全无用 :方法名 变量名 类名 在class

java_goodstudy的博客 1999

Google Gson库:Java对象与JSON格式互转的JAR包

在当今的Web开发中,Java对象与JSON格式的互转是一种常见的数据处理方式。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其结构简单、易于阅读和编写而被广泛应用于前后端数据交互。理解Java对象与JSON格式的互转,能够帮助开发者更高效地进行数据处理和网络通信。JsonObject是Gson库提供的一个便捷的数据结构,用于表示JSON对象。它实质上是一个键值对集合,类似Java中的结构。

weixin_42576410的博客 1293

json转换对象中带XMLGregorianCalendar属性的方法

最近做一个接口平台对接,soap协议,用jaxb转换了对方给的xsd文件为java类。 测试返回的结果对象中有很多带有XMLGregorianCalendar属性,转换成我自己系统需要的json串的时候是下面这个样子的: "dateActivated": { "XMLSchemaType": { "localPart": "dateTime", "namespaceUR

dmsdr的专栏 2664

Gson库2.2.2版本在Android中的JSON处理

本文还有配套的精品资源,点击获取 简介:Gson是Android开发中广泛使用的JSON解析工具,版本2.2.2具备高效和灵活性。它能将Java对象转换为JSON字符串,反之亦然,便于数据存储和网络传输。Gson提供了多种功能,如对象序列化和反序列化、自定义类型适配器、注解驱动处理、处理复杂数据结构以及流式API。新版本的更新确保了向后兼容性。开发者在使用2.2.2版本时应...

weixin_30476025的博客 1297

全面掌握Gson 2.0 JSON处理技术

Gson,Google开发的一款用于在Java对象与JSON数据之间进行转换的库,自2008年诞生以来,一直是Java开发者在处理数据转换任务时的首选工具之一。Gson 2.0版本是对原始版本的一次重大升级,增强了性能,并对原有API做了改进,提升了在现代Java开发中的适用性。它能够直接处理没有注解的JavaBean对象,也支持带有注解以自定义序列化和反序列化的类。在这一章中,我们将快速浏览Gson 2.0的主要功能,为您后续深入学习和应用Gson打下坚实基础。

weixin_35754962的博客 646

Java: 日期相关的类 XMLGregorianCalendar 和 GregorianCalendar

在 Web 开发中经常需要操纵 Web Service 的响应的信息,其中可能包含日期信息,日期信息通常可以通过返回 XMLGregorianCalendar 类的一个对象,改对象封装了年、月、日、日、分、秒及时区(Time Zone)信息。我们假设通过以下语句获取了一个 XMLGregorianCalendar 对象: // 假设函数 func() 返回一个 XMLGrego

当年小丑 1万+

DDR Study - LPDDR5 Power-Up and Initialization Sequence

本文深入解析LPDDR5内存的上电初始化流程,涵盖电源斜坡、复位信号释放和初始化训练等关键阶段。通过实际案例分享,详细探讨了电源轨时序、RESET信号处理、ZQ校准和CA总线训练等核心技术要点,帮助硬件工程师规避常见设计陷阱,确保DDR内存稳定运行。

weixin_42523792的博客 302

XMLGregorianCalendar和Date之间的转换

package com.dateUtil;   import java.util.Calendar; import java.util.Date;   import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; import javax.xml.dataty...

qq_39621802的博客 2813

Win10 Xbox游戏安装错误终极解决方案

Win10 Xbox游戏安装错误终极解决方案作为Windows 10系统深度用户,相信不少玩家都遇到过Xbox应用安装游戏失败的问题。这类问题轻则影响游戏体验,重则导致系统资源占用异常。本文将结合微软官方技术文档与实际维修案例,系统讲解Xbox游戏安装错误的深层原因与解决方案,帮助读者建立完整的故障处理思维体系。

mmoo_python的博客 2065

库存管理系统项目部署方案(基于jdk17)

不需要安装到服务器,运维本地安装就行,主要是用来编译前端代码的。构建完成后将dist文件夹复制到服务器内。

程序员诚哥 6371

XMLGregorianCalendar类转换为java.util.Date

XMLGregorianCalendar类转换为java.util.Date 一、问题描述 1、在使用WebService时,服务端中 java.util.Date ,转换到客户端中,变成XMLGregorianCalendar 类( javax.xml.datatype.XMLGregorianCalendar),那么这两个不同包的类型,该怎么转换呢? 二、代码实现 1、了解XMLGregorianCalendar,从JDK中可以知道,该类主要用于XML中...

HaHa_Sir的博客 725

YOLOv11 TensorRT极致加速:C++部署性能优化完全指南

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有!

LXY_LOVE36的博客 118

Google Gson的使用方法及JSON 技术对比

一 、各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包, 包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0...

Master_Shifu_的博客 1015

【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】

在PCIe协议中,Vendor Defined Messages (VDMs) 是一种允许厂商定义和传输特定功能的消息类型。这种机制扩展了标准 PCIe 消息的功能,可以用于实现供应商自定义的功能,例如固件更新、设备配置和诊断信息传输。PCIe VDM 是通过实现的,它遵循 PCIe 协议栈的结构,包括事务层、数据链路层和物理层。

CodingCos的博客 1895

高通MBIM拨号流程简述

高通平台MBIM流程简述

不秃头的程序猿Gabriel的博客 5070

使用Gson解析json 数组转对象

前边的博客说过将json解析成java的方法,使用的是 这几个jar包,但是在解析时层遇到一个问题,就是在将时间字符串转换为java的Timestamp对象时会抛出异常,这个问题一直放在哪里没有去解决,前两天突然想起来,就去网上找些解决方法,找了很长时间也没有一个完美的解决办法,不是看着复杂就是不能实现,最后我发现有人说用google的Gson解析json挺方便的,于是我就尝试用Gson解析

tasty 1178

6、核函数与再生核希尔伯特空间:原理、应用与实践

本文系统介绍了核函数与再生核希尔伯特空间(RKHS)的理论基础、核心性质及其在机器学习和信号处理中的广泛应用。文章从核方法的优势出发,阐述了其在非线性建模、正则化和算法核化方面的独特价值,并深入探讨了正定核、Mercer定理、表示定理等关键理论。通过构建多种标准核与工程专用核,展示了核函数的设计灵活性。结合支持向量回归(SVR)模型与多个MATLAB示例,详细说明了核方法的实际应用流程与操作技巧。最后,总结了核方法的应用领域、未来发展方向及学习实践建议,为读者提供了一套完整的理论与实践指南。

z2a3b4c5d的博客 143

Gson转换Date类型出错处理(com.google.gson.internal.bind.DateTypeAdapter.deserializeToDate)

用Gson做对象和Json字符串相互转换很方便,但要把包含java.util.Date类型属性的对象转换成Json字符串,如下面的代码: Gsongson=newGson(); String_p="{'name':'Json','age':'0','birthday':'2016-01-16'}"; Personperson=gson.fromJson(_p,Person...

SabreWulf 6876

机器人行业面试全攻略:从0到1拿下心仪Offer,看这一篇就够了

【摘要】2026年机器人行业迎来爆发期,全球市场规模超800亿美元,人才争夺激烈。本文针对机器人行业面试提供系统攻略:首先需明确岗位方向、打造差异化标签并了解目标公司;技术面试高频考点包括ROS框架、SLAM导航、运动控制、深度学习和嵌入式系统;项目介绍需采用STAR+R结构并量化成果;行为面试需注意协作能力与职业规划。文章还总结了简历堆砌、单向输出等五大常见误区,强调长期积累与精准准备的重要性,助力求职者把握行业窗口期机会。

郑伟强dev的专栏 190

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

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

序列化方式二——JSON之Gson

JsonSerializer和JsonDeserializer:Gson 1.x版本中提供的自定义序列化器和反序列化器接口,基于树型结构进行解析。TypeAdapter:Gson 2.0版本中新增的自定义序列化器和反序列化器接口,基于流式结构进行解析,相比树型结构更节省内存。通过实现JsonSerializer和JsonDeserializer接口来自定义序列化和反序列化过程。这在你需要处理复杂对象或特殊格式时非常有用。Builder;Data;Date;

zhouhengzhe的博客 2798

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

解析json之com.google.gson.Gson

需要导入的架包 JSON转JavaBea

itlwc 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android开发中Gson库的JSON调试技巧与应用

JSON作为轻量级数据交换格式,通过树形结构实现数据的结构化展示,在移动开发领域广泛用于数据传输与持久化。其核心原理是通过键值对和嵌套结构描述复杂对象关系,技术价值体现在提升调试效率、简化接口验证过程。Gson作为Google推出的高效JSON处理库,通过类型安全映射和注解支持,解决了Android开发中对象序列化的核心痛点。在调试场景下,开发者可利用GsonBuilder定制输出格式,结合Logcat实现运行时对象可视化,特别适用于网络请求拦截、复杂数据结构解析等典型应用场景。本文演示的DEBUG_JSO

weixin_33769125的博客 324

Json和Gson?

JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。 JSON 数据格式与语言无关,脱胎于 JavaScript。 键值对中一个key是一个字符串, 一个值(...

hgd95的博客 1924
上一篇: 设计模式之门面模式
下一篇: 怎样创建GitHub 项目
iteye_4921
博客等级 码龄8年 25粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值