博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fastjson快速上手(3)
阅读量:6295 次
发布时间:2019-06-22

本文共 4164 字,大约阅读时间需要 13 分钟。

hot3.png

Fastjson toJSONString

Fastjson将java对象序列化为JSON字符串,fastjson提供了一个最简单的入口

package com.alibaba.fastjson;public abstract class JSON {    public static String toJSONString(Object object);}

Sample

import com.alibaba.fastjson.JSON;Model model = new Model();model.id = 1001;String json = JSON.toJSONString(model);

Fastjson writeJSONString

Fastjson在1.2.11版本中,JSON类新增对OutputStream/Writer直接支持。

package com.alibaba.fastjson;public abstract class JSON {   public static final int writeJSONString(OutputStream os, //                                              Object object, //                                              SerializerFeature... features) throws IOException;    public static final int writeJSONString(OutputStream os, //                                             Charset charset, //                                               Object object, //                                              SerializerFeature... features) throws IOException;   public static final int writeJSONString(Writer os, //                                              Object object, //                                              SerializerFeature... features) throws IOException;}

Sample

import com.alibaba.fastjson;import java.nio.charset.Charset;class Model {    public int value;}Model model = new Model();model.value = 1001;OutputStream os = ...;JSON.writeJSONString(os, model);JSON.writeJSONString(os, Charset.from("GB18030"), model);Writer writer = ...;JSON.writeJSONString(writer, model);

Fastjson parseObject InputStream

在1.2.11版本中,fastjson新增加了对InputStream的支持支持。

package com.alibaba.fastjson;public abstract class JSON {    public static 
T parseObject(InputStream is, // Type type, // Feature... features) throws IOException; public static
T parseObject(InputStream is, // Charset charset, // Type type, // Feature... features) throws IOException;}

Sample

import com.alibaba.fastjson;import java.nio.charset.Charset;class Model {    public int value;}InputStream is = ...Model model = JSON.parseObject(is, Model.class);Model model2 = JSON.parseObject(is, Charset.from("UTF-8"), Model.class);

Fastjson当需要处理超大JSON文本时,需要Stream API,在fastjson-1.1.32版本中开始提供Stream API。

超大JSON数组序列化

如果你的JSON格式是一个巨大的JSON数组,有很多元素,则先调用startArray,然后挨个写入对象,然后调用endArray。

JSONWriter writer = new JSONWriter(new FileWriter("/tmp/huge.json"));  writer.startArray();  for (int i = 0; i < 1000 * 1000; ++i) {        writer.writeValue(new VO());  }  writer.endArray();  writer.close();

超大JSON对象序列化

如果你的JSON格式是一个巨大的JSONObject,有很多Key/Value对,则先调用startObject,然后挨个写入Key和Value,然后调用endObject。

JSONWriter writer = new JSONWriter(new FileWriter("/tmp/huge.json"));  writer.startObject();  for (int i = 0; i < 1000 * 1000; ++i) {        writer.writeKey("x" + i);        writer.writeValue(new VO());  }  writer.endObject();  writer.close();

反序列化

例3

JSONReader reader = new JSONReader(new FileReader("/tmp/huge.json"));  reader.startArray();  while(reader.hasNext()) {        VO vo = reader.readObject(VO.class);        // handle vo ...  }  reader.endArray();  reader.close();

例4

JSONReader reader = new JSONReader(new FileReader("/tmp/huge.json"));  reader.startObject();  while(reader.hasNext()) {        String key = reader.readString();        VO vo = reader.readObject(VO.class);        // handle vo ...  }  reader.endObject();  reader.close();

Fastjson DataBind数据库绑定

Fastjson 完全支持数据库绑定方法databind, 也非常易于使用.

Encode

import com.alibaba.fastjson.JSON;Group group = new Group();group.setId(0L);group.setName("admin");User guestUser = new User();guestUser.setId(2L);guestUser.setName("guest");User rootUser = new User();rootUser.setId(3L);rootUser.setName("root");group.addUser(guestUser);group.addUser(rootUser);String jsonString = JSON.toJSONString(group);System.out.println(jsonString);

Output

{"id":0,"name":"admin","users":[{"id":2,"name":"guest"},{"id":3,"name":"root"}]}

Decode

String jsonString = ...;Group group = JSON.parseObject(jsonString, Group.class);

 

转载于:https://my.oschina.net/hutaishi/blog/1523654

你可能感兴趣的文章
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>
Nginx配置文件详细说明
查看>>
怎么用Navicat Premium图标编辑器创建表
查看>>
Spring配置文件(2)配置方式
查看>>
MariaDB/Mysql 批量插入 批量更新
查看>>
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>
solr-4.10.4部署到tomcat6
查看>>
切片键(Shard Keys)
查看>>
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>