JSONPath表达式:根据特定属性的存在或其他属性的值

时间:2015-06-16 03:17:57

标签: json jsonpath

我有JSON结构,它是一种嵌套的父/子结构:

{
  "type": "site",
  "profile_id": "site profile id",
  "children": [
    {
      "type": "dealer",
      "profile_id": "dealer profile id",
      "children": [
        {
          "type": "location",
          "profile_id": "location profile id",
          "children": [
            {
              "type": "customer",
              "profile_id": "customer profile id",
              "children": [
                {
                  "type": "farm",
                  "farm_id": "farm id",
                  "children": [
                    {
                      "type": "field",
                      "field_id": "field id"
                     }]}]}]}]}]}

JSONPath中是否有某种方法可以执行以下操作之一:

  1. 如果它存在,请给我profile_id,或者给我farm_id if 它存在,或者如果它存在,则给我field_id。

  2. 如果type = customer,请给我profile_id,如果type = farm,则给我farm_id,如果type = field

    ,则给我field_id
  3. 给我每个班级的第n个属性。 id实际上是每个类中的第三个属性。这是我最不喜欢的选项,因为我不知道id是否永远是第三个属性。

1 个答案:

答案 0 :(得分:3)

选项2的解决方案需要3个单独的查询,如下所示。以下是3个查询:

$..[?(@.type=='customer')].profile_id
$..[?(@.type=='farm')].farm_id
$..[?(@.type=='field')].field_id

我使用http://www.jsonquerytool.com

验证了这些查询

另请参阅this question以获取类似示例。