首页 > 解决方案 > 如何为复杂的 JSON 数组应用 if-else

问题描述

这是示例 Json:-

[
    {
    "index": 0,
    "object": {

    "uri": "entities/oAFpSUX",

    "type": "configuration/entityTypes/Pet",

    "createdBy": "abc@xyz.com",

    "createdTime": 1531431176965,

    "updatedBy": "abc@xyz.com",

    "updatedTime": 1531431177691,

    "attributes": {

        "Weight": [

            {

                "label": "5 lbs",

                "value": {

                    "PetWeightMeasurement": [

                        {

                            "ov": true,

                            "value": "5",

                        }

                    ],

                    "PetWeightUOM": [

                        {

                            "ov": true,

                            "value": "lbs",

                            "lookupCode": "lbs",

                        }

                    ]

                },

                "ov": true,

                "uri": "entities/oAFpSUX/attributes/Weight/1AeFvD8Kj"

            }

        ],

        "Identifiers": [

            {

                "label": "5155445576",

                "value": {

                    "Type": [

                        {

                            "ov": false,

                            "value": "CRMO_Pet_Id",

                        }

                    ],

                    "ID": [

                        {

                            "ov": true,

                            "value": "5155445576",

                        }

                    ]

                },

                "ov": true,

                "uri": "entities/oAFpSUX/attributes/Identifiers/1AeFvCrHh"

            }

        ],

        "Vaccination": [

            {

                "label": "Bordatella - 2018-10-26",

                "value": {

                    "Type": [

                        {

                            "type": "configuration/entityTypes/Pet/attributes/Vaccination/attributes/Type",

                            "ov": true,

                            "value": "Bordatella",

                            "lookupCode": "4",

                            "lookupRawValue": "Bordatella",

                            "lookupAttributes": [

                                {

                                    "name": "Sort Order",

                                    "value": "3"

                                }

                            ],

                            "uri": "entities/oAFpSUX/attributes/Vaccination/1AeFv9yGr/Type/1AeFvA2X7"

                        }

                    ],

                    "ExpirationDate": [

                        {

                            "type": "configuration/entityTypes/Pet/attributes/Vaccination/attributes/ExpirationDate",

                            "ov": true,

                            "value": "2018-10-26",

                            "uri": "entities/oAFpSUX/attributes/Vaccination/1AeFv9yGr/ExpirationDate/1AeFvA6nN"

                        }

                    ]

                },

                "ov": true,

                "uri": "entities/oAFpSUX/attributes/Vaccination/1AeFv9yGr"

            },

            {

                "label": "Distemper - 2018-10-25",

                "value": {

                    "Type": [

                        {

                            "type": "configuration/entityTypes/Pet/attributes/Vaccination/attributes/Type",

                            "ov": true,

                            "value": "Distemper",

                            "lookupAttributes": [
                                {
                                    "name": "Sort Order",
                                    "value": "4"
                                }
                            ],
                            "uri": "entities/oAFpSUX/attributes/Vaccination/1AeFv9YhJ/Type/1AeFv9cxZ"
                        }
                    ],....

我的问题:我能够将“$..Vaccination..value.Type..value”的值设为“Bordatella”,这样可以正常工作。但是我现在想要的是,如果值为“Bordatella”,那么我想提取“ExpirationDate”下的“值”。有人可以帮我如何在“ExpirationDate”下提取“价值”吗?我不确定是否需要使用一些使用 jmeter 的 if 控制器的自定义 Groovy 代码来做到这一点。任何帮助将不胜感激!

谢谢。

标签: arraysjsonif-statementjmeter

解决方案


有几种方法可以在 Java中运行jq查询 - 例如

假设样本输入已经以明显的方式进行了修改以使其成为有效的 JSON,以下 jq 过滤器将产生如下所示的输出:

.[].object.attributes.Vaccination[].value
| select(.Type[].value == "Bordatella")
| .ExpirationDate[].value

输出:

"2018-10-26"

选择

这是一个 jq 过滤器,它与“疫苗接种”对象的相对位置无关:

  ..
  | objects
  | select(has("Vaccination"))
  | .Vaccination[].value?
  | select(.Type[].value == "Bordatella")
  | .ExpirationDate[].value

推荐阅读