如何将动态值传递给JSON字符串

时间:2013-06-20 12:04:02

标签: java json

我以这种方式构造了一个JSON String,但是无法将动态值传递给它

String input = "{\r\n" + 
                    "    \"Level\": 0,\r\n" + 
                    "    \"Name\": \"String\",\r\n" + 
                    "    \"msgName\": \"String\",\r\n" + 
                    "    \"ActualMessage\": \"String\",\r\n" + 
                    "    \"TimeStamp\": \"/Date(-62135596800000-0000)/\"\r\n" + 
                    "}" ;

String message = "this is value  want to pass to the ActualMessage attribute " ;

I need to pass dynamic value to the ActaulMessage atribute 

请告诉我怎么做?

我尝试过多次试验和错误,但无法成功。

3 个答案:

答案 0 :(得分:2)

如何使用String.format()呢?例如,要传递“动态值”,请在文本中声明占位符:

String input = "insert %s in the string"; // here %s is the placeholder
input = String.format(input, "value");    // replace %s with actual value

现在input将包含字符串"insert value in the string"。在您的示例中,更改此行:

"    \"msgName\": \"String\",\r\n"

替换为:

"    \"msgName\": \"%s\",\r\n"

现在您可以执行替换:

input = String.format(input, message);

请注意,format()方法中的第一个参数有更多选项,并且您可以传递多个参数进行替换。请查看Formatter课程的documentation

答案 1 :(得分:1)

使用字符串连接。

String message = "this is value  want to pass to the ActualMessage attribute " ;
String input = "{\r\n" + 
               "\"Level\": 0,\r\n" + 
               "\"Name\": \"String\",\r\n" + 
               "\"msgName\": \"String\",\r\n" + 
               "\"ActualMessage\": \"" + message + "\",\r\n" + 
               "\"TimeStamp\": \"/Date(-62135596800000-0000)/\"\r\n" + 
               "}" ;

答案 2 :(得分:1)

如果你想操纵Json,请考虑GSON。您的问题可以解决如下。

String input = "{\r\n" + 
                    "    \"Level\": 0,\r\n" + 
                    "    \"Name\": \"String\",\r\n" + 
                    "    \"msgName\": \"MessageName\",\r\n" + 
                    "    \"ActualMessage\": \"%s\",\r\n" + 
                    "    \"TimeStamp\": \"/Date(-62135596800000-0000)/\"\r\n" + 
                    "}" ;

String message = "this is value  want to pass to the ActualMessage attribute " ;
String output=String.format(input,message);
//this will replace %s with the content of message variable.