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 staticT 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);