Home > Software design >  How to use variable in .json file and change it in java
How to use variable in .json file and change it in java

Time:09-14

I have a .json file and i read it to use Files.readAllBytes(Paths.get("classpath")). It works but i need to use variable in .json file and i just want to change variable in other method.

Here is my .json file:

    {
  "type": "FILE",
  "invitationMessage": "",
  "duration": "NO_EXPIRE",
  "items": [
    {
      "uuid": "shdy28-9b03-4c21-9c80-f96f31f9cee9",
      "projectId": "65ht8f99694454a658yef17a95e8f"
    }
  ],
  "invitees": [
    {
      "username": "[email protected]",
      "role": "VIEWER"
    }
  ]
}

This is the method I used the file:

@When("^I send share privately api$")
public void sharePrivately() throws IOException {

    String body = new String(Files.readAllBytes(Paths.get("src/test/resources/config/environments/sharePrivately.json")));
    

    RequestSpecification header = rh.share(payload.userAuth());

    response = header.body(body)
            .when()
            .post("/shares")
            .then()
            .assertThat()
            .extract()
            .response();
    System.out.println(response.getStatusCode());
    }

When i read .json file i want to change username in this method. How can do that ?

Thank you for your advice

CodePudding user response:

Your user name is stored in invitees Array so you need to replace that. For that, we can use JSONObject like below,

    String body = new String(Files
            .readAllBytes(Paths.get("src/test/resources/config/environments/sharePrivately.json")));
    JSONObject jsonObject = new JSONObject(body);
    jsonObject.put("invitees", new JSONArray("[{\"username\": \"[email protected]\",\"role\": \"VIEWER\"}]"));

In your code,

response = header.body(jsonObject.toString())
            .when()
            .post("/shares")
            .then()
            .assertThat()
            .extract()
            .response();

Output:

{
    "duration": "NO_EXPIRE",
    "invitees": [
        {
            "role": "VIEWER",
            "username": "[email protected]"
        }
    ],
    "invitationMessage": "",
    "type": "FILE",
    "items": [
        {
            "uuid": "shdy28-9b03-4c21-9c80-f96f31f9cee9",
            "projectId": "65ht8f99694454a658yef17a95e8f"
        }
    ]
}

You need to use below import,

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20160212</version>
    </dependency>
  • Related