【问题标题】:JSONPath expression to concate two or more JSONPath values用于连接两个或多个 JSONPath 值的 JSONPath 表达式
【发布时间】:2020-10-21 07:02:25
【问题描述】:

我有以下 JSON 数据。我有 JPath 来读取 FirstNameLastName 但使用单个 JSONPath 表达式读取这两个值没有得到。有人可以在这里帮我阅读这两个元素的值吗?

我想使用 JSONPath 表达式读取 Name=Rob|Long 之类的内容。我尝试了一些组合但不起作用

{
   "attributes":     {
          "type":  "Contacts",
           "url":  "/services/data/v36.0/sobjects/Contact/abc123"
    },
    "Id": "abc123",
    "Salutation":  "Mr.",
    "FirstName":  "Rob",
    "LastName":  "Long"
}

提前致谢

【问题讨论】:

    标签: java jsonpath jsonparser


    【解决方案1】:

    试试 JayWay JsonPath:

    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>2.4.0</version>
    </dependency>
    

    这应该可以解决问题:concat($.FirstName,"|",$.LastName)

    但是,它似乎不适用于其他 JsonPath 实现。

    【讨论】:

    • 它不适用于其他实现,因为它不是有效的 JSON 路径。 Jayway 做了很多不被认为是标准的额外工作。
    • 据我了解,standard for JsonPath 是 13 年前在博客上发布的,此后似乎没有改变(与 W3C 维护的 standard for XPath 不同)。因此,也许一个包含人们似乎需要的非标准特性的 JsonPath 实现有望建立新的共识并成为新的事实上的标准。
    • 据我所知,几年前有一个基于 Goessner 实施的标准化计划,但从未出现过标准,像 JayWay 这样的新实施添加(并继续添加)新功能。标准化过程会很棒。实际上,我们甚至应该考虑为不再相似的不同 JSONPath 实现使用不同的标签!
    • 我们正在制定一个官方 RFC:github.com/jsonpath-standard/internet-draft
    【解决方案2】:

    使用Bazaarvoice/ jolt这很容易实现

    --------JSON Input 
    
    {
      "attributes": {
        "type": "Contacts",
        "url": "/services/data/v36.0/sobjects/Contact/abc123"
      },
      "Id": "abc123",
      "Salutation": "Mr.",
      "FirstName": "Rob",
      "LastName": "Long"
    }
    
    --------------spec
    
    [
      {
        "operation": "modify-default-beta",
        "spec": {
          // String join the values in the array x, with a comma and a space
          "fullName": "=concat(@(1,FirstName),'|',@(1,LastName))"
        }
      }
    ]
    --------------------output
    {
      "attributes" : {
        "type" : "Contacts",
        "url" : "/services/data/v36.0/sobjects/Contact/abc123"
      },
      "Id" : "abc123",
      "Salutation" : "Mr.",
      "FirstName" : "Rob",
      "LastName" : "Long",
      "fullName" : "Rob|Long"
    }
    

    试试这个 - https://jolt-demo.appspot.com/

    【讨论】:

      猜你喜欢
      • 2022-11-26
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2023-01-11
      • 2016-08-26
      • 2016-12-22
      • 1970-01-01
      • 2016-06-21
      相关资源
      最近更新 更多