有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

jackson Java代码,用于解析任何json文件,而不考虑其格式或键

我已经搜索了很多天,但没有得到任何答案。最后我来到这个网站。是否有任何java代码或库可以解析任何json文件,而不管其格式如何,并且不知道json文件中存在哪些键

无论给定什么json文件,它都可以显示其中的所有键值对


共 (2) 个答案

  1. # 1 楼答案

    你也可以试试Gensonhttp://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

  2. # 2 楼答案

    Jackson在这方面非常有效

     final Map<String, Object> son = objectMapper.readValue(JSON_SOURCE,
          new TypeReference<Map<String, Object>>() {}
     );
    

    其中JSON_SOURCE可以是StringReaderFilebyte[]InputStream等(参见:ObjectMapper documentation

    此代码片段与针对此问题发布的另一个(类似)答案略有不同。请注意,以上使用:

    1. Jackson的TypeReference而不是Class对象
    2. 接口Map而不是特定的实现(例如HashMap