【问题标题】:Json String - How to add variables in the stringJson String - 如何在字符串中添加变量
【发布时间】:2017-08-14 12:49:12
【问题描述】:

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

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

我有一个字符串变量

String code = "9bPbN3";

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

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

提前非常感谢。

【问题讨论】:

  • 这是关于(非常基本的)字符串连接操作。您可以将字符串文字与 someString = "This is my value: " + variable 之类的变量结合使用
  • 谢谢。我是否需要考虑 : 和 \ 或者,就像: "{\"access_code\" +code , "
  • 如果你想将变量作为字符串传递,你应该用引号括起来:"{\"access_code\": \"" +code + "\","
  • 我建议使用 JSON 库来创建和解析 JSON 字符串以减少出错的可能性,尤其是在您要处理关键生产数据时。
  • 非常感谢你们。它现在工作正常。再次感谢。

标签: java json string concat


【解决方案1】:

如果您正在努力安排",正确的语法应该是

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

与其手动格式化 Json 字符串那样费力,不如考虑使用库或实用程序。

例如(将使用 Jackson):

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

【讨论】:

    【解决方案2】:
    String yourVariable = "xyz";
    String jsonRequestString = "{\"access_code\" : \"" + yourVariable + "\" , "
                          + "\"merchant_reference\" : \"123\", \"language\" : \"en\",\"id\" : \"149018273\","
                          + "\"merchant_identifier\" : \"gKc\", \"signature\" : \"570fd712af47995468550bec2655d9e23cdb451d\", "
                          + "\"command\" : \"VOID\"}";
    

    【讨论】:

    • 你应该使用"{\"access_code\" : \"" + yourVariable + "\"... =)
    • 埃里克,是的,我刚刚发现了我错误的引号。谢谢。
    【解决方案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 字符串会是某种字符串模板。

    【讨论】:

    • IMO,这应该是评论,而不是答案,因为这并不是问题的真正答案,只是建议不要做他正在做的事情
    【解决方案4】:

    另一种选择是使用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”。当您以code 作为参数调用format 方法时,它会将其放在“%s”所在的位置。

    【讨论】:

      猜你喜欢
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 2023-03-12
      • 2015-11-14
      • 2016-01-27
      • 1970-01-01
      相关资源
      最近更新 更多