Java 如何将嵌套json创建为HttpPost实体
所以我创建了一个单元测试,将一些参数传递给特定的url。下面是我传递一些简单参数的方法:Java 如何将嵌套json创建为HttpPost实体,java,json,spring,Java,Json,Spring,所以我创建了一个单元测试,将一些参数传递给特定的url。下面是我传递一些简单参数的方法: HttpPost request = new HttpPost(server.getURL() + "/report/xxx"); String jsonData = "{\"reportId\":\"my_report\",\"name\":\"my_name\"}"; HttpEntity entJson = new StringEntity(jsonData, "application/json",
HttpPost request = new HttpPost(server.getURL() + "/report/xxx");
String jsonData = "{\"reportId\":\"my_report\",\"name\":\"my_name\"}";
HttpEntity entJson = new StringEntity(jsonData, "application/json", "UTF-8");
request.setEntity(entJson);
这很好,但当我有一个嵌套的json时,我不知道怎么做:
{
"reportId" : "my_report",
"name" : "my_name",
"subReports" : [
{
"id" : 144,
"reportId" : "10",
"name" : "my_name10",
}, {
"id" : 145,
"reportId" : "11",
"name" : "my_name11",
}
]
}
以下是我尝试过的代码:
(一)
(二)
这两个都不起作用。还有其他方法吗?对您的方法进行一些更改#1 输出:
{“name”:“my_name”、“reportId”:“my_report”、“subReport”:[{“id”:“144”、“name”:“my_name10”、“reportId”:“10”}
json格式
表示JSONObject{}
表示JSONArray[]
JSONObject
,然后放入父JSONArray
!!
HttpPost request = new HttpPost(server.getURL() + "/report/xxx");
JSONObject report = new JSONObject();
report.put("reportId", "my_report");
report.put("name", "my_name");
JSONObject subReport = new JSONObject();
subReport.put("id", "144");
subReport.put("reportId", "10");
subReport.put("name", "my_name10");
report.put("subReport", subReport);
String jsonStr = report.toString();
request.setEntity(new StringEntity(jsonStr));
request.setHeader("Content-type", "application/json");
HttpPost request = new HttpPost(server.getURL() + "/report/xxx");
String jsonData = "{\"reportId\":\"my_report\",\"name\":\"my_name\",\"subReport\":[{\"id\":144,\"reportId\":\"10\",\"name\":\"my_name10\",}]}";
HttpEntity entJson = new StringEntity(jsonData, "application/json", "UTF-8");
request.setEntity(entJson);
JSONObject report = new JSONObject();
report.put("reportId", "my_report");
report.put("name", "my_name");
//define json array to represent your sub report array
JSONArray subReportArr = new JSONArray();
JSONObject subReport1 = new JSONObject();
subReport1.put("id", "144");
subReport1.put("reportId", "10");
subReport1.put("name", "my_name10");
//put subreport object to array
subReportArr.put(subReport1);
//for subReportn create JSONObject and populate with required data
JSONObject subReportn = new JSONObject();
//then put into parent JSONArray
subReportArr.put(subReportn);
//put subReport array to main report object
report.put("subReport", subReportArr);
String jsonStr = report.toString();
//then print out
System.out.println(jsonStr);