каратэ: Как установить значение Json, если имя объекта содержит точку в массиве - PullRequest
4 голосов
/ 07 января 2020

Вот мой JSON пример кода запроса и, как вы можете видеть # (Paramtervale), который должен быть заменен на MyValue

Below is the example of the request json and code:
            * request 
    """
            {
          "query": {
            "bool": {
              "must": [
                {
                  "match_data": {
                    "Event.Data.message": "#(Paramtervale)"
                  }
                },
                {
                  "match_data": {
                    "Event.Name": "#(Paramtervale2)"
                  }
                }
              ],
              "filter": {
                "range": {
                  "@timestamp": {
                    "gte": "now-1m"
                  }
                }
              }
            }
          }
        }
            """
* set request.Event.Data.message = myvalue
* set request.{Event.Data.message} = myvalue
* set request.(Event.Data.message) = myvalue

Ничто из вышеперечисленного не работает, может кто-нибудь, пожалуйста, помогите

Ответы [ 2 ]

4 голосов
/ 07 января 2020

Здесь есть 2 разных способа, обратите внимание, что для обновления JSON, set больше не требуется. Когда в именах клавиш используются специальные символы, используйте метод квадратных скобок для ссылки на JSON данные:

* def temp = { 'a.b': 'xxx' }
* temp['a.b'] = 'yyy'
* match temp == { 'a.b': 'yyy' }

# using embedded expressions
* def val = 'yyy'
* def temp = { 'a.b': '#(val)' }
* match temp == { 'a.b': 'yyy' }
0 голосов
/ 08 января 2020

Код образца:

Feature: Validation

    Scenario:
        * def req =
            """
            {
                "query": {
                    "bool": {
                        "must": [
                            {
                                "match_data": {
                                    "Event.Data.message": "#(Paramtervale)"
                                }
                            },
                            {
                                "match_data": {
                                    "Event.Name": "#(Paramtervale2)"
                                }
                            }
                        ],
                        "filter": {
                            "range": {
                                "@timestamp": {
                                    "gte": "now-1m"
                                }
                            }
                        }
                    }
                }
            }
            """
        * req.query.bool.must[0].match_data["Event.Data.message"] = "abc"
        * req.query.bool.must[1].match_data["Event.Name"] = "def"
        * print req
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...