当前位置: 首页 > 知识库问答 >
问题:

支持DOM风格访问的Java JSON库

唐增
2023-03-14

我正在用Java编写一个JSON风格的查询引擎,它将受益于通过DOM路径查询JSON文档的能力(就像在Javascript中一样)。我查过格森和杰克逊,但他们似乎都不支持这一点。

有谁知道有什么替代方案或其他建议而不是我自己的?

例如

//Example JSON document
String json = "{ somewhere : {deep : { inside : 123 } }, anarray : [{val=1}] }";
JsonElement root = JsonParser.parse(json);

//What I'd like:
JsonElement node = root.getByDOM("somewhere.deep");  // {inside : 123}
JsonElement node2 = root.getByDOM("somewhere.deep.inside");  // 123
JsonElement node3 = root.getByDOM("anarray[0].val");  // 1
//etc

共有2个答案

杨海
2023-03-14

使用json路径——感谢brian的建议。

刘焱
2023-03-14

Jackson最明确地支持这一点(参见“Jackson in 5分钟”,查找“树模式”),例如:

JsonNode root = mapper.readTree(jsonSource);

我觉得格森也有类似的东西。

但无论你做什么,都不要尝试将JSON转换成XML,然后使用XML工具——这条路通常会给你带来很多麻烦,不仅仅是速度慢。这是因为JSON和XML数据模型从根本上是不兼容的。

 类似资料:
  • 不需要通过配置,以下URL地址是一样的: http://siteurl/index.php?m=User&a=reg 和 http://siteurl/index.php?m=user&a=reg http://siteurl/User/reg 和 http://siteurl/user/reg http://siteurl/Group/Module/action 和 http://siteurl

  • 在本章中,将学习如何访问XML文档的信息单元的XML DOM节点。 XML DOM的节点结构允许开发人员在树周围导航以查找特定信息并同时访问信息。 访问节点 以下是可以访问节点的三种方式 - 通过使用方法 通过循环遍历或遍历节点树 通过使用节点关系导航节点树 1. getElementsByTagName() 此方法允许通过指定节点名称来访问节点的信息。它还允许访问节点列表和节点列表长度的信息。

  • 22.3. 使用Spring的 CCI访问支持 22.3.1. 记录转换 对JCA CCI支持的一个目标是提供方便的机制来操作CCI记录。 开发人员可以通过使用Spring CciTemplate 来指定创建记录并从记录中提取数据的策略。 如果你不想在你的应用程序中直接操作记录,你可以使用下面的接口来配置用于输入输出记录的策略。 为创建一个输入Record,开发人员可以使用 RecordCreat

  • 支持多种版本库访问方法 你已经看到了一个版本库可以用多种方式访问,但是可以—或者说安全的—用几种方式同时并行的访问你的版本库吗?回答是可以,倘若你有一些深谋远虑的使用。 在任何给定的时间,这些进程会要求读或者写访问你的版本库: 常规的系统用户使用Subversion客户端(客户端程序本身)通过file://URL直接访问版本库; 常规的系统用户连接使用SSH调用的访问版本库的svnserve进程(

  • 问题内容: 我想要 与 ndk库 不同的 字符串 值 。因为我有两个风味演示和现场直播,所以我想为演示风味和实时风味值“你好,我来自演示”,我想“我来自现场” 这是我的java文件代码 } 这是我的cpp文件代码 这是我的build.gradle文件 我已经在演示文件夹以及主文件夹中粘贴了相同的cpp文件,但是可以实现我的任务。任何帮助将不胜感激,这是一些参考链接 https://develope

  • 本文向大家介绍W3C DOM支持哪些方法?,包括了W3C DOM支持哪些方法?的使用技巧和注意事项,需要的朋友参考一下 以下是W3C DOM支持的方法- 序号 属性和说明 1 createAttribute(name) 返回具有指定名称的新创建的Attr节点。 例如-document.createAttribute(name) 2 createComment(text) 创建并返回一个包含指定文本