Fastjson API Stream使用說明


Fastjson API Stream

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

反序列化

  JSONReader reader = new JSONReader(new FileReader("/tmp/huge.json"));
  reader.startArray(); //數組反序列化
  reader.startObject();//對象反序列化
  while(reader.hasNext()) {
        VO vo = reader.readObject(VO.class);
        // handle vo ...
  }
  reader.endArray();
  reader.close();

總結

Fastjson近期也爆出有安全漏洞,出現安全漏洞后阿里團隊也第一時間對Fastjson的漏洞進行了修復,修復后不知道大家的項目是否有做升級。網上也有人提議說是廢棄Fastjson了,用回原來的JackJson,本人覺得其實用那種沒有確定的說是是好或壞,他僅僅只是一個工具類罷了,也不需要再去做比較。

如有問題,歡迎有問題及時交流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM