Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将嵌套json创建为HttpPost实体_Java_Json_Spring - Fatal编程技术网

Java 如何将嵌套json创建为HttpPost实体

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",

所以我创建了一个单元测试,将一些参数传递给特定的url。下面是我传递一些简单参数的方法:

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


嘿!它起作用了。后续问题:如果我有两个子报告怎么办?像这样{“name”:“my_name”,“reportId”:“my_report”,“subReport”:[{“id”:“144”,“name”:“my_name10”,“reportId”:“10”},{“id”:“145”,“name”:“my_name11”,“reportId”:“11”}]}@JJC您需要创建另一个
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);