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

如何使用JsonPath处理带有名称空间的JSON

冯俊英
2023-03-14

我在使用JsonPath检查字段前面带有命名空间的json时遇到麻烦。我无法从google中找到任何东西,也无法查看现有问题或留档。我无法让任何东西正常工作。我有以下json片段:

{
  "_embedded" : {
    "bb:list" : [ {
      "id" : "id",
      "label" : "label",
      "description" : "description",
      "timezone" : "timezone",
      "postalAddress" : {
        "addressCountry" : "country",
        "addressLocality" : "city",
        "addressRegion" : "state",
        "postalCode" : "postal code",
        "streetAddress" : "street address"
      }
    } ]
  }
}

我正在尝试检查bb:list字段,看看其中有多少项。这个JsonPath表达式似乎不起作用:

“$._embedded.bb:list”

如果我删除了“bb:”,那么使用它可以使用“$._embedded.list”,所以它是bb:它似乎不喜欢。

共有1个答案

叶坚
2023-03-14

所以事实证明,我遇到的问题根本不是JsonPath表达式或JsonPath。Spring Boot引入了JsonPath,所以一切都编译好了,看起来很好,但是在运行时,无论出于什么原因,它都不起作用。我明确地将JsonPath添加到我的依赖列表中,它神奇地开始工作。

编辑:所以上面的修复不是永久性的。事实证明,JsonPath - Json-smart的瞬态依赖关系使用的版本比Spring-test(通过几个瞬态依赖关系)拉入的版本的版本更新。我通过从spring-starter-test依赖项中添加json-smart的排除项来修复它:

testCompile('org.springframework.boot:spring-boot-starter-test'){
    exclude group: 'json-smart'
}
 类似资料:
  • 我已经阅读了这里的文章和在使用JAXB时处理数字签名的示例代码,并且遇到了一个问题,我认为是JAXB封送将名称空间引入“signedinfo”元素。 我定义了一个XSD,它将被用不同编程语言实现的多个应用程序使用。我将XSD编译为JAXB注释类,供我的实现(Jersey JAX-RS和JAX-WS)使用。我目前拥有的流量如下: JAXB对象使用适当的数据创建或从远程应用程序传递。 按照Blaise

  • 我面临Elasticsearch结果的问题,该结果在属性名称中使用@。json结果片段: {“\u index”:“logs-2015.12.31”,“\u type”:“log”,“\u id”:“AVH4eA4QKV0mbJuiIHO1”,“\u score”:null,“\u source”:{“@timestamp”:“2015-12-31T14:36:35.378Z”,“beat”:{“

  • 问题内容: 该问题旨在作为回答一个特殊问题的参考,该问题可能采用不同的形式: 我有一个XML文档,其中包含多个名称空间。如何使用SimpleXML解析它? 我的XML在标记名称中有一个冒号(“:”),如何使用SimpleXML访问它? 当名称中带有冒号时,如何访问XML文件中的属性? 如果您的问题已作为与此问题的重复而关闭,则该问题可能与这些示例不同,但是此页面应告诉您您需要知道的内容。 这是一个

  • 我有一个来自外部endpoint的巨大XML响应。我想解析java类的XML响应。如果没有一个XML有名称空间,我就能够解析成相应的POJOS,直到那时一切都很好。 但是,响应可能仅在根元素中包含命名空间。例如,像这样 我可以保证没有一个内部xml元素会有更多的命名空间。 有没有办法实现这一点?我看到一些完全忽略命名空间的答案,但感觉不是很有说服力。有没有办法正确解析这些。 这是我为XML响应建模

  • 我正在尝试选择一个特定的

  • XPath如何处理XML命名空间? 如果我使用 为了解析下面的XML文档,我得到了0个节点。 但是,我没有在XPath中指定名称空间(即不是路径的每个标记的前缀)。如果我没有明确告诉XPath,它怎么知道我想要哪个?我认为在这种情况下(因为只有一个名称空间),XPath可以完全忽略。但如果有多个名称空间,事情可能会变得糟糕。