How to change values in a json file using XPath/JsonPath in java How to change values in a json file using XPath/JsonPath in java json json

How to change values in a json file using XPath/JsonPath in java


Using Jayways JsonPath you can:

private static final Configuration configuration = Configuration.builder()    .jsonProvider(new JacksonJsonNodeJsonProvider())    .mappingProvider(new JacksonMappingProvider())    .build();@Testpublic void a_value_can_be_updated(){    String originalJson = "{\n"        + "\"session\":\n"        + "    {\n"        + "        \"name\":\"JSESSIONID\",\n"        + "        \"value\":\"5864FD56A1F84D5B0233E641B5D63B52\"\n"        + "    },\n"        + "\"loginInfo\":\n"        + "    {\n"        + "        \"loginCount\":77,\n"        + "        \"previousLoginTime\":\"2014-12-02T11:11:58.561+0530\"\n"        + "    }\n"        + "}";    JsonNode updatedJson = JsonPath.using(configuration).parse(originalJson).set("$.session.name", "MYSESSINID").json();    System.out.println(updatedJson.toString());}

You can configure the default JsonProvider so you don't have to pass it in all calls.


PropertyUtils.setProperty(jsonObj, "session.value", "new value");        PropertyUtils.setProperty(jsonObj, "session.name", "new name");        mapper.writeValue(Json File ,jsonObj);


the easiest way i found to exchange inside Json (When my Body is a JSONObject)

import com.jayway.jsonpath.JsonPath;JsonPath.parse(Body).set(fieldPath, Value);