gpt4 book ai didi

java - 让 JSON 字符串跨越多个 Socket receive()

转载 作者:行者123 更新时间:2023-11-30 04:04:55 26 4
gpt4 key购买 nike

现在我可以通过网络将 JSON 字符串发送到我的 Android 应用程序。唯一的问题是,目前消息的长度不超过几百个字符。这很快就会扩展到每个 JSON 字符串包含数千个字符。我如何确保在将其发送到解析器(否则会崩溃)之前已收到整个 JSON 字符串?

例如,我如何在线程中接收数据的基本方法:

while (true) 
{
try
{
// Read from the DataInputStream
bytes = mmDataIn.read(buffer); //buffer is a 4096 size byte[]
Log.d("JSON", "dataread: " + String.valueOf(bytes)); //only prints stuff > 0
parseJSON(buffer); //will not work unless full JSON
}
catch (IOException e)
{
Log.e("JSON", "disconnected", e);
break;
}
}

我正计划使用 StringBuilder 来拼凑 JSON 字符串,但我不知道如何判断它何时完成。

我正在读这个:How to identify end of InputStream in java

但是对于 JSON 字符串,最好的方法是什么?我假设这很常见,并且有一种标准的处理方法。谢谢。

最佳答案

如果您接收到的数据多于您的缓冲区可以容纳的数据,您将不得不选择一个更大的缓冲区,或者重复将输入流读入缓冲区,并连接生成的 json,然后再将其传递给您的 parseJSON 方法。

对于任何 InputStream,如果 read 返回 -1,则表示已到达输入流的末尾,因此这也适用于您的 DataInputStream。

干杯,汤姆

关于java - 让 JSON 字符串跨越多个 Socket receive(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835391/

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