Json String - 如何在字符串中添加变量

时间:2017-03-22 12:02:44

标签: java json string concat

我有一个像下面的Json字符串

 String jsonRequestString = "{\"access_code\" : \"9bPbN3\" , "
                          + "\"merchant_reference\" : \"123\", \"language\" : \"en\",\"id\" : \"149018273\","
                          + "\"merchant_identifier\" : \"gKc\", \"signature\" : \"570fd712af47995468550bec2655d9e23cdb451d\", "
                          + "\"command\" : \"VOID\"}";

我有一个String变量

String code = "9bPbN3";

问题,如何插入上面的字符串而不是在下面的地方硬编码。即,而不是9bPbN3,我想在那里使用变量代码。

   String jsonRequestString = "{\"access_code\" : \"9bPbN3\" , "

非常感谢提前。

4 个答案:

答案 0 :(得分:5)

如果您正在努力安排",那么正确的语法就是

String jsonRequestString = "{\"access_code\" : \""+code+"\" , ";

不要手动格式化Json字符串,而是需要花费很多精力,可以考虑使用库或util。

对于ex(将使用Jackson):

Request re = new Request();
re.setCode(code);
...
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(re);

答案 1 :(得分:4)

String yourVariable = "xyz";
String jsonRequestString = "{\"access_code\" : \"" + yourVariable + "\" , "
                      + "\"merchant_reference\" : \"123\", \"language\" : \"en\",\"id\" : \"149018273\","
                      + "\"merchant_identifier\" : \"gKc\", \"signature\" : \"570fd712af47995468550bec2655d9e23cdb451d\", "
                      + "\"command\" : \"VOID\"}";

答案 2 :(得分:3)

一般建议是避免用香草字符串制作json结构。而是使用json解析器/编写器库进行此操作。

结帐http://stleary.github.io/JSON-java/index.html / http://stleary.github.io/JSON-java/index.html

有各种其他库和教程可用。

如果您不想这个方向,请使用"已知值"占位符并替代它。所以完整的json将包含" access_code" :" @@ ACCESS_CODE @@"并且您将用实际值替换占位符。所以你的json字符串将是某种字符串模板。

答案 3 :(得分:1)

另一个选择是使用format方法,如下所示:

 String jsonRequestString = "{\"access_code\" : \"%s\" , "
                          + "\"merchant_reference\" : \"123\", \"language\" : \"en\",\"id\" : \"149018273\","
                          + "\"merchant_identifier\" : \"gKc\", \"signature\" : \"570fd712af47995468550bec2655d9e23cdb451d\", "
                          + "\"command\" : \"VOID\"}";
String code = "9bPbN3";
String result = String.format(jsonRequestString, code);

注意我放在code所在位置的“%s”。当您使用format作为参数调用code方法时,它会将其放在“%s”所在的位置。