我目前正在开发一个java客户端实现,它能够通过restful API发送请求和接收响应来检索电影响应,从而与服务器进行通信。
我正在模拟这样的测试:客户机将在成功向服务器发送请求后接收响应。
因此,对于使用单个响应进行响应的特性,可以直接将其存储到单个文件中并直接从中读取。
例如,下面的single-response.json文件表示我能够检索电影细节的响应。
{
result: {
firstName: "John",
lastName: "Wick",
movie: "John Wick"
}
}
然而,我在处理连续的JSON响应时遇到了困难。我收到了一个错误“JSON标准只允许一个顶级值"。下面的响应甚至不是响应列表,而是单独和周期性地发送,如服务器所示。
连续响应.json文件
{
result: {
percentage: "0%",
result: "started movie download"
}
}
{
result: {
percentage: "65%",
result: "downloading movie in progress"
}
}
{
result: {
percentage: "100%",
result: "finished download movie"
}
}
那么,在电影下载过程中,我该如何从一个文件中读取和处理连续的json响应呢?还是我必须在不同的单独文件中读取它呢?
1条答案
按热度按时间qojgxg4l1#
这个错误告诉了你需要知道的一切。JSON标准 * 不允许超过一个顶级元素 *。
我见过的一个常见的做法是使用数组作为顶层元素,并将json对象添加到该数组中。
example.json
如果使用多个工作线程,请确保同步文件访问。
当处理许多响应并且json文件变得非常大时,如果您处理json对象的方法(即您使用的库)包含 * 所有 * json数据,您可能最终会使用大量内存。
此外,当处理来自服务器的连续响应时,每次向json文件添加新响应时,您最有可能以重写整个json文件而告终(同样,取决于您的库)。
也许可以考虑使用数据库或平面文件存储(例如,将响应捆绑到它们自己的文件中),而不是单个文件。