摇动嵌套条件

问题描述 投票:0回答:1

我想检查一个条件,并根据类型,想检查另一个条件。 对于 BookingType:3,如果输入中提供 TrackingList,则输出应具有标志“TrackingAvailable”:“Y”。对于所有其他预订类型,我们不应显示此标志。

到目前为止,我可以检查 TrackingList 在输入中是否可用并显示 TrackingAvailable 标志。

但是,我无法弄清楚如何为 BookingType 添加另一个条件

示例输入、震动规格和输出如下。我们需要更新 jolt 规范以添加 BookingType 条件,以便仅针对 BookingType:3 显示 TrackingAvailable

输入

{
  "Booking": [
    {
      "BookingLines": {
        "BookingLine": [
          {
            "Metadata": {
              "TrackingList": {
                "Tracking": [
                  {
                    "TrackingNumber": "1232131231"
                  }
                ]
              }
            }
          }
        ]
      },
      "BookingType": "1"
    }
  ]
}

震动规格

[
  {
    "operation": "modify-default-beta",
    "spec": {
      "Booking": {
        "*": {
          "*": "Booking[&1].&",
          "BookingLines": {
            "BookingLine": {
              "*": {
                "Metadata": {
                  "TrackingList": {
                    "Tracking": "null"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "Booking": {
        "*": {
          "BookingLines": {
            "BookingLine": "Booking[&2].BookingLines.BookingLine"
          }
        }
      }
    }
  }
  ,
  {
    "operation": "shift",
    "spec": {
      "Booking": {
        "*": {
          "*": "Booking[&1].&",
          "BookingLines": {
            "BookingLine": {
              "*": {
                "Metadata": {
                  "TrackingList": {
                    "Tracking": {
                      "null": {
                        "#N": "Booking[&8].BookingLines.BookingLine[&5].Metadata.TrackingAvailable"
                      },
                      "*": {
                        "#Y": "Booking[&8].BookingLines.BookingLine[&5].Metadata.TrackingAvailable"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

输出


{
  "Booking": [
    {
      "BookingLines": {
        "BookingLine": [
          {
            "Metadata": {
              "TrackingAvailable": "Y"
            }
          }
        ]
      }
    }
  ]
}
json jolt
1个回答
0
投票

这对你有用吗?

[
  {
    "operation": "modify-default-beta",
    "spec": {
      "Booking": {
        "*": {
          "*": "Booking[&1].&",
          "BookingLines": {
            "BookingLine": {
              "*": {
                "Metadata": {
                  "TrackingList": {
                    "Tracking": "null"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "Booking": {
        "*": {
          "BookingLines": {
            "BookingLine": "Booking[&2].BookingLines.BookingLine"
          },
          "*": "&2[&1].&"
        }
      }
    }
  }
 ,
  {
    "operation": "shift",
    "spec": {
      "Booking": {
        "*": {
          "*": "Booking[&1].&",
          "BookingType": {
            "@": "Booking[&2].&1",
            "3": {
              "@(2,BookingLines)": {
                "BookingLine": {
                  "*": {
                    "Metadata": {
                      "TrackingList": {
                        "Tracking": {
                          "null": {
                            "#N": "Booking[&10].BookingLines.BookingLine[&5].Metadata.TrackingAvailable"
                          },
                          "*": {
                            "#Y": "Booking[&10].BookingLines.BookingLine[&5].Metadata.TrackingAvailable"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.