首页 > 其他分享 >gson介绍

gson介绍

时间:2023-08-16 16:40:12浏览次数:33  
标签:序列化 String newField 介绍 new jsonOutput gson


java json对象的处理,目前有好一些类库,比较著名的有Jackson,Fastjson等。

这里介绍一下google封装的类库gson。

gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要

使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。

1)toJason()方法将对象转换成Json字符串

2)fromJson()方法来实现从Json相关对象到java实体的方法。

如:


Person person 
  
  =
  
   gson.fromJson(str, Person.
  
  class
  
  );
 
 
List
  
  <
  
  Person
  
  >
  
   ps 
  
  =
  
   gson.fromJson(str, 
  
  new
  
   TypeToken
  
  <
  
  List
  
  <
  
  Person
  
  >>
  
  (){}.getType());


其中TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。


 

通过使用annotation来灵活配置需要序列化的字段的示例如下,不用太多解释了。

public class VersionedClass {
   @Since(1.1) private final String newerField;
   @Since(1.0) private final String newField;
   private final String field;

   public VersionedClass() {
     this.newerField = "newer";
     this.newField = "new";
     this.field = "old";
   }
 }

 VersionedClass versionedObject = new VersionedClass();
 Gson gson = new GsonBuilder().setVersion(1.0).create();
String jsonOutput = gson.toJson(someObject);
 System.out.println(jsonOutput);
System.out.println();

gson = new Gson();
jsonOutput = gson.toJson(someObject);
 System.out.println(jsonOutput);

======== OUTPUT ========
{"newField":"new","field":"old"}

{"newerField":"newer","newField":"new","field":"old"}

标签:序列化,String,newField,介绍,new,jsonOutput,gson
From: https://blog.51cto.com/u_7457870/7110022

相关文章

  • 多文件上传控件uploadify介绍
    在很多场合下,会用到文件的批量上传功能,这个对需要上传多个照片,图片或者文档的人来说,会省不少事情。而普通的id下面的file控件只能支持单个文件的上传,这个确实比较弱。所以介绍一种可以上传多个文件的js控件:基于jquery的uploadify。它结合了ajax和flash,实现了这个多线程上传的功能......
  • 机器是否联网的javascript的判断方法介绍
    在很多场景下,只有机器已经联网以后,web应用才能启动。如果没有联网,就会提示错误。、但是机器有时候要重启。如果机器重启后,立刻启动web应用的话,可能,机器上的网络服务还没有准备好。特别是windows7,启动网络服务需要好几秒,这个时候怎么办呢? 之前尝试过几种方法:比如通过ping来判断,......
  • Unity UGUI的InputField(输入框)组件的介绍及使用
    UGUI的InputField(输入框)组件的介绍及使用1.什么是UGUI的InputField组件?UGUI的InputField组件是Unity中的一个用户界面组件,用于接收用户的输入。它可以用于创建文本输入框、密码输入框等功能。2.UGUI的InputField组件的工作原理UGUI的InputField组件通过监听用户的输入事件,用......
  • JVS开源基础框架:平台基本信息介绍
    JVS是面向软件开发团队可以快速实现应用的基础开发脚手架,主要定位于企业信息化通用底座,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容器化构建,集合持续化构建。产品设计定位JVS是定位为辅助研发团队的快速脚手架,降低项目构建基础......
  • 大数介绍
    如果基本的整数类型和浮点类型精确度还不够满足需求,那么可以使用javamath包中的BigInteger和BigDecimal类。这些类的对象代表了数字,该数字有任意长序列的位数。BigInteger类实现了任意精度整数计算,BigDecimal对浮点数有同样的实现。BigInteger类的静态方法valueOf将long型转换为B......
  • Java介绍
    @目录Java介绍Java的发展Java可以做什么Java介绍Java的发展詹姆斯·高斯林Java编程语言的共同创始人之一,一般公认他为“Java之父”。90年代初,创立green项目,后来发展一套语言叫做“Oak”,后改名为Java。2009年,SUN公司已经被oracle公司收购Java可以做什么1.开发大型企业级网站......
  • Oracle并行查询介绍及相关hint的使用
    并行查询1概念介绍参考文章HowParallelExecutionWorks---并行执行的工作原理(oracle.com)ParallelQueryConcepts---并行查询概念(oracle.com)使用并行查询后,会根据SQL语句执行步骤的具体操作,将其分为可并行执行和无法并行执行,用户进程充当查询协调器来获取必要数......
  • Python教程(9)——Python变量类型列表list的用法介绍
    (目录)在Python中,列表(list)是一种有序、可变的数据结构,用于存储多个元素。列表可以包含不同类型的元素,包括整数、浮点数、字符串等。实际上列表有点类似C++语言中的数组,但仅仅只是类似,和数组还是有点不一样的。列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常......
  • Python教程(9)——Python变量类型列表list的用法介绍
    在Python中,列表(list)是一种有序、可变的数据结构,用于存储多个元素。列表可以包含不同类型的元素,包括整数、浮点数、字符串等。实际上列表有点类似C++语言中的数组,但仅仅只是类似,和数组还是有点不一样的。列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改......
  • 介绍几款WPF应用的UI库
    在WPF中对于前端页面的书写,我们有现成的UI类库,不需要我们自己再去写我这里介绍几款1、MahApps官网https://mahapps.com/使用,在App.xaml中添加<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><Resour......