Home > other >  Inserting String variable into JSON which is in a form of String
Inserting String variable into JSON which is in a form of String

Time:12-07

I have a JSON payload saved as a String

String jsonBody = “{\n”
              ” \“example\“: {\n”
              ”  \“example\“: [\n”
              ”   {\n”
              ”    \“example\“: 100,\n”
              ”    \“this_is_example_json_key\“: \“this_is_example_json_value\“,\n”

I created that by copying body from i.e Postman into

String jsonBody = "here I pasted the body";

Unfortunately I cannot have everything hardcoded there, so I have to change some values to variables. The JSON in postman looks like:

"this_is_example_json_key":"x"

And so on. Let's assume that:

String x = “this_is_example_json_value“;

If I just replace it like

” \“this_is_example_json_key\“: \“ x \“,\n”

or something like that, the value in the body will be just this_is_example_json_value, where I need "this_is_example_json_value" (the "" marks are part of the value).

So the question is, how to set up those / " in the String, so in the end in the value of the JSON I will end up with the value inside " ".

I've tried to play with the " / but nothing of those were working. Variable must be passed with those " " because otherwise, the API is sending back an error.

CodePudding user response:

Don't try to build up JSON using strings. Use a proper JSON parser.

import org.json.JSONException;
import org.json.JSONObject;

public class Eg {
    public static void main(String[] args) throws JSONException {
        String x = "this_is_example_json_value";
        JSONObject example = new JSONObject();
        example.put("this_is_example_json_key", x);
        JSONObject json = new JSONObject();
        json.put("example", example.toString());
        System.out.println(json.toString());
    }
}

Which outputs:

{"example":"{\"this_is_example_json_key\":\"this_is_example_json_value\"}"}

With no messing around wondering what needs to be escaped.

CodePudding user response:

you can use an extra """

String jsonBody = "{\n"
              " \"example\": {\n"
              "  \"example\": [\n"

              "   {\n"
              "    \"example\": 100,\n"
              "    \"this_is_example_json_key\": \"\\\"this_is_example_json_value\\\"\"\n}]}}";

in this case you will get after deserializaton

"this_is_example_json_value"
  • Related