Gson流式序列化JsonWriter

简介: 通常我们序列化使用时,是直接使用Gson将整个对象转换为Json串,如果有看过gson源码的小伙伴会发现其内部实际上是基于JsonWriter来实现流式序列化的接下来我们来看一下JsonWriter的使用姿势

通常我们序列化使用时,是直接使用Gson将整个对象转换为Json串,如果有看过gson源码的小伙伴会发现其内部实际上是基于JsonWriter来实现流式序列化的


接下来我们来看一下JsonWriter的使用姿势


首先需要获取JsonWriter对象,在创建时需要指定输出流


JsonWriter writer = new JsonWriter(new OutputStreamWriter(System.out));
复制代码


接下来看一下流式的序列化输出可以怎么整


writer.beginObject()
        .name("name").value("一灰灰blog")
        .name("age").value(24)
        .name("email").nullValue()
        .endObject();
writer.close();
复制代码


注意上面的实现,对于普通对象而言,流式使用 beginObject() 开头,使用

endObject()结尾


在中间,通过 name指定json串的key,value为json串的值


比如上面的执行输出为

{"name":"一灰灰blog","age":24,"email":null}
复制代码


如果对象内部嵌套了对象或者数组,同样是通过beginObject/beginArray来处理


JsonWriter writer = new JsonWriter(new OutputStreamWriter(System.out));
writer.beginObject()
        .name("name").value("一灰灰blog")
        .name("age").value(24)
        .name("email").nullValue()
        .name("skill")
        .beginArray()
        .value("Java")
        .value("Python")
        .endArray()
        .endObject();
writer.close();
复制代码


输出如下:

{"name":"一灰灰blog","age":24,"email":null,"skill":["Java","Python"]}



相关文章
|
6月前
|
JSON Java API
GSON 泛型对象反序列化解决方案
GSON 泛型对象反序列化解决方案
290 0
|
6月前
|
JSON Android开发 数据格式
android 使用GSON 序列化对象出现字段被优化问题解决方案
android 使用GSON 序列化对象出现字段被优化问题解决方案
120 0
|
Android开发
Android 中使用Gson进行list集合的序列化与反序列化
Android 中使用Gson进行list集合的序列化与反序列化
189 0
|
JSON Java API
Android 中使用Gson完成对象的序列化与反序列化
Android 中使用Gson完成对象的序列化与反序列化
246 0
|
JSON 缓存 Java
Android 序列化框架 Gson 原理分析,可以优化吗?
Gson 是 Google 推出的 Java Json 解析库,具有接入成本低、使用便捷、功能扩展性良好等优点,想必大家都很熟悉了。在这篇文章里,我们将讨论 Gson 的基本用法和以及主要流程的源码分析。
340 0
|
JSON 数据格式
Gson流式反序列化JsonReader
前面介绍了一片Gson的流式序列化,接下来我们看一下流式的反序列化,主要借助JsonReader来实现
311 0
|
JSON Java 数据格式
Gson序列化输出Ignore策略 -- Map篇
前面介绍了几种gson在序列化时,忽略某些字段数输出的方式,然而当时的实例中,需要序列化的对象都是Java bean对象,如果我们需要序列化的是Map对象,又可以怎么处理呢? 接下来我们通过实际的case,来演示如何实现Map忽略指定key的功能
583 0
|
JSON Java 数据格式
Gson之序列化指定忽略字段的三种写法
在我们日常使用json序列化框架过程中,经常会遇到在输出json字符串时,忽略某些字段,那么在Gson框架中,要想实现这种方式,可以怎么处理呢? 本文介绍几种常见的姿势
1340 0
|
10天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
20天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。