web-dev-qa-db-ja.com

Json文字列-文字列に変数を追加する方法

以下のような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\" , "

よろしくお願いします。

5
user2967948

"の配置に苦労している場合、正しい構文は次のとおりです。

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

多大な労力を必要とするJson文字列を手動でフォーマットする代わりに、ライブラリまたはユーティリティの使用を検討してください。

Ex(going to use Jackson library)の場合:

Request re = new Request();
re.setCode(code);
...
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(re);
5
Suresh Atta
String yourVariable = "xyz";
String jsonRequestString = "{\"access_code\" : \"" + yourVariable + "\" , "
                      + "\"merchant_reference\" : \"123\", \"language\" : \"en\",\"id\" : \"149018273\","
                      + "\"merchant_identifier\" : \"gKc\", \"signature\" : \"570fd712af47995468550bec2655d9e23cdb451d\", "
                      + "\"command\" : \"VOID\"}";
4
Ollie in PGH

一般的なアドバイスは、バニラ文字列から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
tweber

別のオプションは、次のように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」があった場所に配置されます。

1
Jerfov2