使用 Java 从文件转换 JSON 个对象

Converting JSON Object(s) from file using Java

我有一个 JSON 文件,不知道其中的数据如何存储,也不知道数据的结构。 唯一已知的是它将有一个 JSON 对象数组或单个 JSON 对象。

我需要从文件中获取每个对象并将其存储为单独的项目。如果文件中有对象数组,我应该得到一个 JSON 字符串数组,我可以将其存储在数据库中。 基本上,我需要读取这个文件并从中分离出每个 JSON 对象并将其作为字符串存储在数据库中。

其中一种方法是使用 JACKSON ObjectMapper 并将这些项目作为键值对分配给 Hashmap,但我不确定如何完成如果有列表 JSON文件中的对象。

示例JSON 文件:

 [
   {
     "name":"Bob",
     "type":"Email",
     "from":"a@a.com",
     "to":"b@B.com",
     "attachments":[...],
     .
     .
     .
   }
 ]

Jackson 是我最喜欢的 JSON-to-POJO 库。从(URL 或文件系统)加载 JSON 的位置并不重要,有多个输入源的处理程序。

这是一个例子:

Map<String,Object> userData = mapper.readValue(new File("user.json"), Map.class);

就您要解析的 JSON 结构数量未知而言,首先想到的是为您期望的每种类型创建一个映射器。然后您可以将解析代码包装在 try/catch 块中,这样如果第一个失败并出现 Jackson 在遇到意外格式时给您的任何异常,您就可以尝试下一个格式等等。

如果您只是想对事先不知道其结构的 JSON 进行一般解析,您可以尝试这样的操作:

mapper.readValue(jsonString, new TypeReference<List<EntryType>>() {});

Jackson 的文档非常好——仔细阅读它绝对有帮助。这是一个很好的五分钟教程:http://wiki.fasterxml.com/JacksonInFiveMinutes

我更喜欢使用 Gson:

Gson gson;
Map<String, Object>parameters=gson.fromJson(myString);

剩下就是迭代地图了,希望对你有帮助

你知道JSON的对象结构吗(可以是数组也可以是单个)?如果是,


首先将文件中的 json 字符串加载到内存中的字符串中。

  • 通过在多次出现的 '{' 或 '}' 的外部结构中搜索 '[',']' 来检查字符串是否存在数组
  • 一旦您知道您拥有的是数组还是单个对象,就可以将其作为对象引用传递给 Jackson 或 GS​​ON 解析器
  • 在内存中创建 JsonObject.class 列表的数组。实际上最好将此列表包含在另一个 class 中。说 myJsonObjects 并在其中有一个列表。

让我们看看 GSON 解析器(google),尽管 Jackson 也可以用于类似的实现

  Gson gson = new Gson();
  if(isArray){
     myJsonObjects  jsonArray = gson.fromJson(jsonStringFromFile,myJsonObjects );

  }
  else{
   gson.fromJson(jsonStringFromFile,JsonObject);
  }

http://google-gson.googlecode.com/svn-history/trunk/gson/docs/javadocs/com/google/gson/Gson.html