Manual tutorial FastJson
/ Fastjson API Stream
Fastjson API Stream
Fastjson當需要處理超大JSON文本時,需要Stream API,在fastjson-1.1.32版本中開始提供Stream API。
序列化
超大JSON數(shù)組序列化
如果你的JSON格式是一個巨大的JSON數(shù)組,有很多元素,則先調(diào)用startArray,然后挨個寫入對象,然后調(diào)用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對,則先調(diào)用startObject,然后挨個寫入Key和Value,然后調(diào)用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();