Обновите ответ JSON из API и передайте обновленный ответ в качестве ввода / тела в другой API, используя Rest Assured

#java #rest-assured #rest-assured-jsonpath #jayway

#java #будьте уверены #rest-assured-jsonpath #jayway

Вопрос:

В настоящее время я вызываю API с помощью Rest-Assured, тело ответа которого опубликовано ниже. мне нужно выбрать часть ответа, то есть весь тег WorkItems (в строке 3), и обновить поля «CorrelationUId» и «Value» (узел в теге WorkItemAttributes), значение которого должно быть установлено на уникальное значение.

Обновленный JSON будет служить телом для другого API. Как я могу добиться этого, используя Rest-Assured и java?

    {
    "TotalRecordCount": 1,
    "BatchSize": 500,
    "WorkItems": [{
        "CreatedByApp": "IssueManagement",
        "ItemState": 1,
        "StackRank": 0,
        "CorrelationUId": "05c0df91-cd6f-4f74-8e19-0be556879e59",
        "RowStatus": null,
        "WorkItemDeliveryConstructs": [{
                "CreatedByUser": "Gateway",
                "ItemState": 0
            }

        ],

        "WorkItemLanguages": null,
        "WorkItemProductInstances": [{
            "ModifiedOn": "2020-08-05T05:01:15.335316Z",
            "UserUId": null,
            "ItemState": 0
        }],
        "WorkItemAssociations": null,
        "WorkItemAttachments": null,
        "WorkItemAttributes": [{

                "IdValue": "00000000-0000-0000-0000-000000000000",
                "IdExternalValue": "",
                "Value": "enter unique data here",
                "ItemState": 0
            },

            {

                "IdValue": "00000000-0000-0000-0000-000000000000",
                "IdExternalValue": "",
                "Value": "",
                "ItemState": 0
            }
        ]


    }],
    "Faults": [],
    "StatusCode": 0,
    "MergeResult": null
}
  

Ниже приведен фрагмент кода для вышеупомянутого.

  RequestSpecification request = RestAssured.given();
request.header("Content-Type", "application/json")
 JSONObject requestParams = new JSONObject();
requestParams.put("data", Property.getProperty("data")); 
Response response = request.post(url);
JsonPath js = response.jsonPath();
JSONObject responseObject = new JSONObject(response.jsonPath().getJsonObject("WorkItems"));
 
 
Configuration configuration = Configuration.builder().jsonProvider(new JacksonJsonNodeJsonProvider()).mappingProvider(new JacksonMappingProvider()).build();
DocumentContext json = JsonPath.using(configuration).parse(jsonString);
String jsonPath = "WorkItems.CorrelationUId";
String newValue = "newCorrelationUId";
System.out.println(json.set(jsonPath, newValue).jsonString()); 
  

Добавлена приведенная ниже зависимость с помощью Rest assured. тем не менее, я получаю конфликт импорта с зависимостью jayway «Импорт io.restassured.path.json.JSONPath сталкивается с другим оператором импорта «

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

Комментарии:

1. Пожалуйста, обновите вопрос своей попыткой.

Ответ №1:

приведенный ниже фрагмент помог мне обновить значения узлов и выбрать часть всего json с помощью Jayway

   DocumentContext json = JsonPath.using(configuration).parse(file);
   String jsonPath  = "WorkItems[0].WorkItemAttributes[0].Value";
String newValue = "new title";
DocumentContext finaljson = json.set(jsonPath, newValue);
 DocumentContext context = JsonPath.parse(finaljson.jsonString());
HashMap<String, Object> requiredpartofJson= context.read("WorkItems[0]");
  

Комментарии:

1. вы можете принять свой ответ через 24 часа после ответа