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"]}



相关文章
|
JSON Java API
GSON 泛型对象反序列化解决方案
GSON 泛型对象反序列化解决方案
1159 0
|
JSON Android开发 数据格式
android 使用GSON 序列化对象出现字段被优化问题解决方案
android 使用GSON 序列化对象出现字段被优化问题解决方案
679 0
|
JSON 缓存 Java
Android 序列化框架 Gson 原理分析,可以优化吗?
Gson 是 Google 推出的 Java Json 解析库,具有接入成本低、使用便捷、功能扩展性良好等优点,想必大家都很熟悉了。在这篇文章里,我们将讨论 Gson 的基本用法和以及主要流程的源码分析。
785 0
|
Android开发
Android 中使用Gson进行list集合的序列化与反序列化
Android 中使用Gson进行list集合的序列化与反序列化
506 0
|
JSON Java API
Android 中使用Gson完成对象的序列化与反序列化
Android 中使用Gson完成对象的序列化与反序列化
617 0
|
JSON 数据格式
Gson流式反序列化JsonReader
前面介绍了一片Gson的流式序列化,接下来我们看一下流式的反序列化,主要借助JsonReader来实现
640 0
|
JSON Java 数据格式
Gson序列化输出Ignore策略 -- Map篇
前面介绍了几种gson在序列化时,忽略某些字段数输出的方式,然而当时的实例中,需要序列化的对象都是Java bean对象,如果我们需要序列化的是Map对象,又可以怎么处理呢? 接下来我们通过实际的case,来演示如何实现Map忽略指定key的功能
965 0
|
JSON Java 数据格式
Gson之序列化指定忽略字段的三种写法
在我们日常使用json序列化框架过程中,经常会遇到在输出json字符串时,忽略某些字段,那么在Gson框架中,要想实现这种方式,可以怎么处理呢? 本文介绍几种常见的姿势
1987 0
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
657 1
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
578 1

热门文章

最新文章