gpt4 book ai didi

java - Gson JSON 最大大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:56 27 4
gpt4 key购买 nike

我需要从 Clob 中提取一些数据并将其序列化为 JSON 格式。

Gson 可以处理的最大大小是多少?

在这里https://github.com/google/gson/blob/master/UserGuide.md我只能找到“字符串:反序列化超过 25MB 的字符串没有任何问题”

上下文:我用..

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

更详细:

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){..}

注意:在我当前的代码中,限制是 Integer.MAX_VALUE

我的解决方案是使用从数据库中检索到的数据 block 。我想知道 GSON 可以处理的理论最大尺寸。我不会在接收端使用浏览器。

最佳答案

Gson 不施加任何限制。它也没有任何已知的架构限制。

我认为您的方法将面临的主要问题是首先将数据加载到内存中。

我建议使用 Gson stream API 来编写从数据库中读取的 JSON。使用JsonWriter并创建和流式传输您的 JSON 对象。

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

copyStream 可能是这样的

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

关于java - Gson JSON 最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com