Json與Java間傳參常用的幾種方式

一)Get方式傳參

Get方式傳參,是典型的URL傳參方式,在URL後面加上變量和所要傳遞的值即可,這種方式比較簡單,下面以示例的形式展示其使用方法


  URL

    http://localhost:8080/favccxx/rs/findInspectJobByJobId?jobId=525b8818d52cc6f835bb9e41

  Java源代碼:

1
2
3
4
5
6
7
8
@GET
@Path("/findInspectJobByJobId")
@Produces({ MediaType.TEXT_XML })
public String findInspectJobByJobId(@QueryParam("jobId") String jobId,
@Context HttpServletRequest request) {
       InspectJob inspectJob = inspectJobService.findOne("jobId", jobId);
return JsonUtil.toJson(inspectJob);
    }

(二)POST方式傳參

  2.1使用URL做變量

  將URL最後的位置當做變量去處理,如下所示的000,既是URL的地址,也是需要傳遞的參數。

  URL

  http://localhost:8080/favccxx/rs/getInspectJobByJobId/000

  Java源代碼:


1
2
3
4
5
6
7
8
@POST
@Path("/getInspectJobByJobId/{jobId}")
@Produces({ MediaType.TEXT_XML })
public String getInspectJobByJobId(@PathParam("jobId") String jobId,
@Context HttpServletRequest request) {
       InspectJob inspectJob = inspectJobService.findOne("jobId", jobId);
return JsonUtil.toJson(inspectJob);
    }

  2.2 使用傳統的&連接符傳遞多個參數

  一直誤認爲Jsonjava端傳遞參數,就是使用Json的格式傳遞的,其實並不是,默認情況下,Json向後端傳遞參數仍然是使用=&連接符傳遞參數的。示例代碼如下:


  URL

  http://localhost:8080/favccxx/rs/queryInspectJobById

  參數:

    jobId=123456&jobName=A任務

  Java源代碼:

1
2
3
4
5
6
7
8
9
@POST
@Path("/queryInspectJobById")
@Produces({ MediaType.APPLICATION_JSON })
public String queryInspectJobById(@FormParam("jobId") String jobId,
@FormParam("jobName") String jobName, @Context HttpServletRequest request) {
       System.out.println("jobId:"+ jobId + ",AndjobName is:" + jobName) ;
       InspectJob inspectJob = inspectJobService.findOne("jobId", jobId);
return JsonUtil.toJson(inspectJob);
    }

  2.3 使用Json格式傳遞,使用POJO類解析參數

  使用此類方式傳遞參數時,Json格式數據中的變量,必須是Pojo類中的參數,這樣可靈活傳遞參數,後端根據實際需要解析此參數,進行業務處理。


  URL

    http://localhost:8080/favccxx/rs/queryInspectJobByJobId

  參數:

   {

     "jobId" : "123456",

     "jobName" : "A任務"

   }

  Java源代碼:

1
2
3
4
5
6
7
8
9
@POST
@Path("/queryInspectJobByJobId")
@Produces({ MediaType.APPLICATION_JSON })
public String queryInspectJobByJobId(@RequestBody String body,
@Context HttpServletRequest request) {
       InspectJob inspectJobReq = JsonUtil.fromJson(body, InspectJob.class);
       InspectJob inspectJob = inspectJobService.findOne("jobId", inspectJobReq.getJobId());
return JsonUtil.toJson(inspectJob);
    }

  2.4使用Json格式傳參,使用自定義類QueryMap解參,適合分頁查詢

  前端傳參格式不變,後端封裝一個QueryMap類,用來查詢進行分頁相關的數據。

  URL

  http://localhost:8080/favccxx/rs/pageQueryJob

  參數:

{

    "pageIndex" : 2,

   "queryMap" : {

  "jobId" :"525b8818d52cc6f835bb9e41"

}

}

Java源代碼:

1
2
3
4
5
6
7
8
9
@POST
@Path("/pageQueryJob")
@Produces({ MediaType.APPLICATION_JSON })
public String pageQueryJob(@RequestBody String body,
@Context HttpServletRequest request){
       PageQuery pageQuery= JsonUtil.fromJson(body,PageQuery.class);
       String jobId = pageQuery.getQueryMapByKey("jobId").toString();
returnnull;
    }
發佈了12 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章