我正在通过网络发送一个 JSON 格式的文件,并希望从中检索信息。该文件是使用 File.createTempFile 方法创建的。代码如下:
File patchFile = File.createTempFile("indexer", ".pf", null);
try(FileOutputStream fos = new FileOutputStream(patchFile)) {
byte[] patchFileBytes = new byte[payloadLength];
buffer.readBytes(patchFileBytes);
fos.write(patchFileBytes);
}
我正在尝试找到以 JSON 形式读取 patchFile
并从中获取值的最佳方法。生成的文件结构如下所示(在客户端):
{
"0": [
{
"fileId": "Cache.dat",
"fileChecksum": "d41d8cd98f00b204e9800998ecf8427e"
},
{
"fileId": "Character.fbx",
"fileChecksum": "d41d8cd98f00b204e9800998ecf8427e"
},
{
"fileId": "Skybox.png",
"fileChecksum": "d41d8cd98f00b204e9800998ecf8427e"
}
],
"1": [
{
"fileId": "indexer.pf",
"fileChecksum": "f8130e38ce5c58ccbf200d24c2629632"
}
]
}
目前,我已将文件发送并读入内存,如上所示,但我不确定从这里开始实际读取数据到哪里,有人可以帮助我吗?
我正在使用GSON。
最佳答案
我建议避免写入临时文件,而是用读取器包装缓冲区并在 API 之一中使用 (我假设缓冲区是一个InputStream,然后使用java.io.InputStreamReader将其转换为Reader)
GSON 有很多 API 来执行您所需的任务:
示例:
要遵循迭代方法,请查看com.google.gson.JsonParser#parse
,它接受读取器或字符串来获取元素。
如果您知道要反序列化的元素的类型是什么,那么您可以查看使用 com.google.gson.Gson#fromJson
方法。
请参阅以下 API 文档,它可能会有所帮助:
JsonStreamParser
JsonParser
Gson
关于java - 使用 GSON 将 java.io.File 解析为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29985224/