首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gson学习与使用

Gson介绍: GSON是Google提供用来在Java对象和JSON数据之间进行映射Java类库。可以一个Json字符转成一个Java对象,或者一个Java转化为Json字符串。...//上面的注解是lombok注解,起到简化Bean类作用。 Gson提供了public String toJson(Objcet obj)方法,可以将对象转化为json字符串。...} } 结果: Gson提供了public T fromJson(String jsonStr,T.class)方法,可以json字符串转化为Java对象  json字符串转化为JavaBean...4)@Expose(deserialize = false, serialize = true)既可以序列化,也可以反序列化。 注:这里序列化指:将对象转化为json字符串。...: " + typeAdapter.toJson(p)); try { System.out.println("---->反序列化:是字符串转化为对象 : "

1.5K20

Gson 系列文章

JSON 序列化和反序列化入门 Java-JSON 序列化基础 先来看一些序列化例子,Gson序列化意味着 Java 对象映射成 JSON 数据格式,在接下来教程中,我们会逐步介绍一些更复杂情况...反序列化嵌套对象 在平时开发中,很多中情况是 API 接口返回 JSON 数据,我们解析成相应对象。...@SerializedName 匹配多个反序列化名称 我们介绍如何多个字段名称映射到一个字段属性上。...简化自定义序列化为单个对象 通过 @Expose 是能解决一部分问题,但是存在局限性,现在我们使用自定义来解决这些问题,作法不干涉 Merchant 类,只在干涉序列化过程。...Advanced — 通过 @JsonAdapter 自定义(反)序列化 之前我们介绍了如何使用 Gson自定义(反)序列化和自定义实例创建。

15.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

JSON 反序列化 Long 变 Integer 或 Double 问题

一、背景 工作中可能会遇到对 Map 进行 JSON 序列化,其中值中包含 Long 类型数据,反序列化后强转 Long 时报类型转换异常问题。...---- 我们观察序列化后 json 字符串: {"aInteger":1,"aLong":2} 会发现其实 JSON 中并没有包含类型信息,而反序列化类型为 Map.class 或者 Map...---- 具体底层如何处理,大家可以对每个框架反序列方法单步跟进去即可得到答案。...---- 实际工作中,还遇到有同学 Map 使用 JSON 序列化方式存储到 Redis 中,然后反序列化后,原本 Long 类型值,强转为 Long 导致线上出现BUG(前面讲到,这种情况下使用...3.2 反序列化自定义类 如果上游序列化是 Map, 如果类型核实清楚,我们依然可以自定义 POJO 类来反序列化。

3.2K30

除了FastJson,你还有选择: Gson简易指南

将对象转化成 JSON字符串过程称为序列化,JSON 字符串转化成对象过程称为反序列化。 ?...除了JSON 字符串序列化为自定义Java 对象之外,我们该可以转为 Map 集合,Gson 提供了对 Map 集合转换,使用起来也十分简单: @Test void test_map() {...(Date.class, new DateSerializer()).create(); 这样一来,一旦遇到要序列化 Date 类型字段时,都会通过自定义 serialize 方法日期以 yyyy-MM-dd...比如现在有个 JSON 字符串内容为 {"CODE": 400, "MESSAGE": "参数错误"},需要被反序化为前文提到 Result 对象,由于字段名不一样,为了实现对应转换,就需要自定义...优先级更高,由于只是 registerTypeAdapter方法执行简化成了注解方法,这里就不再演示,直接在前文自定义反序列化一节 Result 类上使用就可以看到效果。

1.3K30

除了FastJson,你还有选择: Gson简易指南

对象转化成 JSON字符串过程称为序列化,JSON 字符串转化成对象过程称为反序列化。...JSON 字符串序列化为自定义Java 对象之外,我们还可以转为 Map 集合,Gson 提供了对 Map 集合转换,使用起来也十分简单: @Test void test_map() { String...Map 对象真实类型并不是我们经常用 HashMap,而是 Gson 自定义集合LinkedTreeMap ,它实现Map 接口来存储键值对,在新增和删除上实现上进行了优化,并且存储键值对顺序作为遍历顺序...转换 List 要将 List 数据转换为 JSON数据,使用 Gson 方式与处理 Array 数据一样;这里主要讲的是JSON 数据转为 List 对象操作略有不同,要将一个 JSON 数组数据转换为一个自定义...比如现在有个 JSON 字符串内容为 {"CODE": 400, "MESSAGE": "参数错误"},需要被反序化为前文提到 Result 对象,由于字段名不一样,为了实现对应转换,就需要自定义

1.6K40

Gson 简单使用姿势小结

基本序列化与反序列化 一般来讲,我们通过 Gson 对象来实现 Json 序列化与反序列化,如下是几个简单序列化与反序列化 case // Serialization Gson gson = new...串中 对象没有 Get/Set 方法,也依然可以反序列化(对象也没有继承自 Serialize 接口,当然我个人观点是请继承 Serialize 接口) 如果我希望 null 成员,也可以输出到...JsonObject 与 JsonArray 某些场景下我们可能并没有定义反序列化数据对象,比如 FastJson 中直接反序化为JSONObject/JSONArray,然后手动获取数据进行业务处理...,这种场景下,gson 可以如何支持呢?...泛型序列化 以上属于常规基本使用姿势,实际工作中,关于泛型序列化和反序列化可以说非常常见了,那么应该如何处理呢 public static class ResWrapper { private

74820

Java-json序列化和反序列化

java开发中经常会遇到json序列化与反序列化,常用json序列化工具有阿里Fastjson、spring mvc内置Jackson、还有就是我们接下来要说谷歌Gson。...toJSONString(Object object); // JavaBean序列化为带格式JSON文本 public static final String toJSONString(Object...可以一个Json字符转成一个Java对象,或者一个Java转化为Json字符串。...(); //把json序列化为实体类(Test)对象 Test test = gson.fromJson(json, Test.class); //输出---反序列化后结果为...二、反序列化时需注意json格式,如果是数组则最外层是用‘[ ]’来包括,如果是对象或者是Map则是用‘{ }’来包括, 根据需要反序列化json格式来选定需要反序列化用方法gson.fromJson

4.5K60

【说站】Java反序列化如何理解

Java反序列化如何理解 概念 1、客户端从文件或网络中获取序列对象字节流,并根据字节流中保存对象状态和描述信息通过反序列重建对象。...使用注意 2、反序列化时需注意json格式,如果是数组则最外层是用‘[ ]’来包括,如果是对象或者是Map则是用‘{ }’来包括,根据需要反序列化json格式来选定需要反序列化用方法gson.fromJson...()应该传递哪种参数,反序列化成对象参数应该是这个对象反射 实例 public static void main(String[] args) {       // 定义json       String... json = "{\"name\":\"转换对象\",\"sex\":\"女\",\"age\":20}";       //实例化Gson       Gson gson = new Gson();...      //把json序列化为实体类(Test)对象       Test test = gson.fromJson(json, Test.class);       //输出---反序列化后结果为

43450

【手册详解】Java序列化引发血案

通过序列化和反序列化方式实现对象深拷贝。 3、常见序列化方式 常见序列化方式包括 Java 原生序列化、Hessian 序列化、Kryo 序列化、JSON 序列化等。...建议这个序列化版本号声明为私有,以避免运行时被修改。 实现序列化接口类可以提供自定义函数修改默认序列化和反序列化行为。...JSON 序列化将对象转化成 JSON 字符串,JSON 反序列化则是 JSON 字符串转回对象过程。常用 JSON 序列化和反序列化库有 Jackson、GSON、Fastjson 等。...下面给出使用 Gson 框架模拟 JSON 序列化时遇到反序列化问题示例代码: /** * 验证GSON序列化类型错误 */ @Test public void testGSON() {...服务 A 通过 Dubbo 来调用服务 B,A 和 B 之间数据通过 Map 类型传输,服务 B 使用 Fastjson 来实现 JSON 序列化和反序列化。

94920

Mson,让JSON序列化更快

问题 我们经常需要在主线程中读取一些配置文件或者缓存数据,最常用结构化存储数据方式就是将对象序列化为JSON字符串保存起来,这种方式特别简单而且可以和SharedPrefrence配合使用,因此应用广泛...分析Gson源码可以发现,它在序列化时大量使用了反射,每一个field,每一个get、set都需要用反射,由此带来了性能问题。 如何优化 知道了性能瓶颈之后,我们如何去修改呢?...我做了个简单测试,分别用Gson和JSONObject方式去序列化一个bean,看下各自速度如何。...我们可以通过使用AnnotationProcessor为带有特定注解bean自动生成相应序列化和反序列化实现,用户只需要调用这些方法来完成序列化工作。...继续优化 继续深入测试发现,当JSON数据量比较大时用JSONObject处理会比较慢,究其原因是JSONObject会一次性字符串读进来解析成一个map,这样会有比较大内存浪费和频繁内存创建。

2K110

Android之Google Gson介绍

Gson 对象 toJson 方法可以 Java 基本数据类型、以及 POJO 对象、List、Map 、JsonElement 等转为 json 格式字符串, 函数 含义 String toJson...Gson 对象 fromJson 方法做与 toJson 相反操作, json 格式字符串转为基本数据类型、 POJO 对象、List、Map 、JsonElement 等 函数 含义 T fromJson...(String json, Class classOfT) 指定 Json 反序化为指定类对象,如果指定类是泛型类型,则使用 fromJson(String, Type)方法。...T fromJson(String json, Type typeOfT) 指定 Json 反序化为指定类型对象,如果指定对象是泛型类型,则此方法很有用,对于非泛型对象,请改用 fromJson...(String json, Class classOfT) T fromJson(JsonElement json, Class classOfT) 指定 json 元素反序化为指定类型对象

1.3K10

穿越到东汉末年Jackson

在这之后更是 破荆州,下江陵,顺流而东也,舳舻千里,旌旗蔽空,酾酒临江,横槊赋诗(对酒当歌,人生几何),固一世之雄也 蜀汉Gson Gson是一个Java库,可用于Java对象转换为其JSON表示形式...它也可以用于JSON字符串转换为等效Java对象。Gson可以处理任意Java对象,包括您没有源代码预先存在对象。...东吴FastJson fastjson是阿里巴巴开源JSON解析库,它可以解析JSON格式字符串,支持Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。...包装意味着不是User序列化为以下内容: 它将像这样包装: image.png image.png @JsonSerialize @JsonSerialize表示在编组实体 时要使用自定义序列化程序...让我们通过一个简单例子来看看这个注解是如何工作: image.png 这里我们有一个 POJO,我们想将带有fName、f_name和firstName 等值JSON 反序列化到 POJOfirstName

1.9K20

SpringBoot序列化和反序列化

(2)当Java对象通过网络进行传输时候。因为数据只能够以二进制形式在网络中进行传输,因此当把对象通过网络发送出去之前需要先序列化成二进制数据,在接收端读到二进制数据之后反序列化成Java对象。...java.io.ObjectInputStream:表示对象输入流 ,它readObject()方法源输入流中读取字节序 ,再把它们反序列化成为一个对象,并将其返回。..., "course":["java","python"] } 在 Spring Boot 中, 想要一个接口接收Json格式数据并返回Json格式数据,前端http请求头“Accept”设置为“...此时需要自定义自己消息转换器,有两种方式 方式一 使用Spring或者第三方提供HttpMessageConverter(如FastJson,Gson,Jackson) 问题引入字符类型字段为null...类,并通过该类read方法组装成最后对象,由于Map对应是Object,这里Gson最终定位到内置ObjectTypeAdaptor类,该类关键代码如下:我们可以看到,数值类型(NUMBER

2.2K40

Java序列化引发血案

建议这个序列化版本号声明为私有,以避免运行时被修改。 实现序列化接口类可以提供自定义函数修改默认序列化和反序列化行为。 上面注释也说明,建议序列化版本号声明为私有,以避免运行时被修改。...JSON 序列化是基于 JSON 这种结构来实现JSON 序列化将对象转化成 JSON 字符串,JSON 反序列化则是 JSON 字符串转回对象过程。...常用JSON 序列化和反序列化库有 Jackson、GSON、Fastjson 等。...服务 A 通过 Dubbo 来调用服务 B,A 和 B 之间数据通过 Map 类型传输,服务 B 使用Fastjson 来实现 JSON 序列化和反序列化。...作为服务提供方,可以采用 JDK 或者 Hessian 等序列化方式; 作为服务使用方,我们不要从 Map 中一个字段一个字段获取和转换,可以使用 JSON 库直接 Map 映射成所需对象,这样做不仅代码更简洁还可以避免强转失败

39820

人生苦短,我用Gson

2、Gson基本用法 gson主要提供了fromJson和toJson两个方法,fromJson用于反序列化,toJson用于把json序列化为Json字符串。...强悍之处,普通类库序列化和反序列时必须要求所对应类中属性必须含有setter和getter方法,Gson完全不需要。...":"steven","age":18} } {person={name=steven, age=18.0} } 此处可以看出通过gson可以近乎完美的转换mapjson,可以看出有个有小问题fromJson...另外一点可以看出当类型为BEGIN_OBJECT时ObjectTypeAdapter返回Gson自定义map类型LinkedTreeMap,如果使用时用到强转为HashMap会报错,由于我们使用都是...五、总结 Gson是Google公司发布一个开放源代码Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。

2.1K50
领券