Fastjson API 스트림


Fastjson은 매우 큰 JSON 텍스트를 처리해야 하는 경우 Stream API가 필요합니다. Stream API는 fastjson-1.1.32 버전에서 제공됩니다.

직렬화

매우 큰 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인 경우 먼저 startObject를 호출한 다음 키와 값을 하나씩 쓴 다음 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();

Deserialization

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