Fastjson API Stream

2022-05-06 15:16 更新

Fastjson當(dāng)需要處理超大JSON文本時(shí),需要Stream API,在fastjson-1.1.32版本中開始提供Stream API。

序列化

超大JSON數(shù)組序列化

如果你的JSON格式是一個(gè)巨大的JSON數(shù)組,有很多元素,則先調(diào)用startArray,然后挨個(gè)寫入對(duì)象,然后調(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對(duì)象序列化

如果你的JSON格式是一個(gè)巨大的JSONObject,有很多Key/Value對(duì),則先調(diào)用startObject,然后挨個(gè)寫入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();


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)