小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
通常我们序列化使用时,是直接使用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"]}
一灰灰的联系方式
尽信书则不如无书,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 个人站点:blog.hhui.top
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
- 微信公众号:一灰灰blog