java - 使用 GSON 将 java.io.File 解析为 JSON

标签 java json

我正在通过网络发送一个 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/

相关文章:

java - HHH000342 : Could not obtain connection to query metadata : null

javascript - 在 Javascript 中将对象的一部分从数字键转换为数组

java - JSON Stream 解析在对象末尾崩溃

java - Json、Java、解析(如何只获取json的一部分

ios - MagicalRecord:修改相关对象的属性

java - 如何设置多播/单播环境,使每个成员都可以向组广播并向特定成员发送特定数据

java - 在 WebView 完全加载后执行任务

java - 无法通过蓝牙写入十六进制字节

java - 初始化 QuantumRenderer : no suitable pipeline found in Eclipse JavaFX 时出错

javascript - 如何使用 JavaScript 抓取 JSON 页面并收集数据