Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gson JSON max size

Tags:

java

json

gson

clob

I need to extract some data from a Clob and serialize it in JSON format.

What's the maximum size Gson can handle?

Here https://github.com/google/gson/blob/master/UserGuide.md I can just find "Strings: Deserialized strings of over 25MB without any problems"

Context: I use..

ResultSet.getClob()
-> BufferedReader 
-> String singleLine 
-> StringBuilder 
-> String "jsonAttribute" to serialize

More in detail:

try{

    StringBuilder sb = new StringBuilder();
    BufferedReader br = new BufferedReader( resultset.getClob(2).getCharacterStream() );
    String line;
    try{
        while ((line = br.readLine()) != null) {
           sb.append(line).append("\n");
        }
    }catch(IOException ee){
        // logger
        throw ee;
    }

    String jsonAttribute = sb.toString();

}catch(Exception xx){..}

Note: in my current code the limitation is Integer.MAX_VALUE

My solution will consit in using chunks of the data retrieved from the DB. I would like to know the theoretical max size that GSON can handle. I won't use a browser on the receiving side.

like image 277
Gabe Avatar asked May 17 '26 10:05

Gabe


1 Answers

Gson doesn't impose any limit. Nor it has any known arquitectural limitation.

I think the main problem you will face with your approach is loading the data into memory in the first place.

I recommend using Gson stream API to write the JSON as you read it from the database. Use a JsonWriter and create and stream your JSON object.

Reader reader = resultset.getClob(2).getCharacterStream();
JsonWriter jsonWriter = new JsonWriter(someOutputStream);
copyStream(reader, someOutputStream);

Where copyStream could be something like

public static void copyStream(Reader istream, Writer ostream) throws IOException {
  char buffer[] = new char[2048];
  while (true) {
    int len = istream.read(buffer);
    if (len == -1)
      return;
    ostream.write(buffer, 0, len);
  }
}
like image 56
sargue Avatar answered May 19 '26 23:05

sargue



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!