我已经搜索了很多天,但没有得到任何答案。所以最后我来到了这个网站。是否有任何 java 代码或任何库可以解析任何 json 文件,而不管其格式如何,并且不知道 json 文件中存在哪些所有键。
无论给出什么 json 文件,它都可以显示其中的所有键值对。
你也可以试试 Genson http://code.google.com/p/genson/。
如果根是一个对象,您可以将 json 文件反序列化为映射(否则它是一个数组并且您反序列化为一个数组)。
FileReader reader = new FileReader("path/to/your/json");
Map<String, Object> map = new Genson().deserialize(reader, Map.class);
根据您想要获得更好性能的目标,您可以直接使用流式 API(但要编写更多代码)。您只想打印键/值?
Genson 具有完整的数据绑定支持并提供了一些其他不错的功能,请查看wiki。
杰克逊在这方面做得很好。
final Map<String, Object> son = objectMapper.readValue(JSON_SOURCE,
new TypeReference<Map<String, Object>>() {}
);
在哪里JSON_SOURCE
可以是String
, Reader
, File
,byte[]
等InputStream
(参见:ObjectMapper 文档)
此代码片段与针对此问题发布的另一个(类似)答案略有不同。请注意,上述用途:
TypeReference
而不是一个Class
对象Map
而不是特定的实现(例如HashMap
)