在 Postman 的请求正文中传递多个 JSON 数据并使用 Jersy(JXRS) 进入 Java Rest API

Posted

技术标签:

【中文标题】在 Postman 的请求正文中传递多个 JSON 数据并使用 Jersy(JXRS) 进入 Java Rest API【英文标题】:Pass multiple JSON data in Request Body of Postman and Get into Java Rest API using Jersy(JXRS) 【发布时间】:2018-11-04 11:27:21 【问题描述】:

我想获取多个 JSON 数据,这些 JSON 数据以 Json 格式传递给正文中的 Postman。

如果我传递单个 json 数据,例如:""firstName":"riya","lastName":"soni"",那么我可以在如下提到的 Java API 中获取它:

@Path("patient")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String getPatient(Patient patient) 
System.out.println(patient.getFirstName());
System.out.println(patient.getLastName());
return "ok";

它工作正常。但是如果我想传递像 ["firstName":"riya","lastName":"soni","firstName":"shreya","lastName":"patel"]

这样的数据

并像下面这样进入 API:

@Path("patientDetail")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public String getPatientDetails(@RequestBody List<Patient> patient) 
for (Patient p : patient) 
System.out.println(p.getFirstName());
System.out.println(p.getLastName());

return "ok";

当我通过传递多个 JSON 数据来满足邮递员的请求时,即使 getPateintDetails 方法也没有调用,如何在 Rest API 中传递和获取多个 json 数据。请给我相同的解决方案或参考链接。

【问题讨论】:

请添加您遇到的错误代码和异常 【参考方案1】:

检查这个正在寻找的小型工作示例..

Track.java

public class Track 
    String title;
    String singer;
    //getters and setters
    @Override
    public String toString() 
        return "Track [title=" + title + ", singer=" + singer + "]";
    

JSONService.java

@Path("/json/check")
public class JSONService 
    @POST
    @Path("/postManyAsString")
    @Consumes(MediaType.APPLICATION_JSON)
    public String createManyTrackInJSON(String jsonStr) throws Exception 
        JSONObject inputObject = new JSONObject(jsonStr);
        if(inputObject.get("tracks") instanceof JSONObject)
        
            JSONObject jsonObject = (JSONObject) inputObject.get("tracks");
            System.out.println(jsonObject.get("title"));
            System.out.println(jsonObject.get("singer"));
        
        else if(inputObject.get("tracks") instanceof JSONArray)
        
            JSONArray jsonArray = (JSONArray) inputObject.get("tracks");
            for(int i=0; i<jsonArray.length(); i++)
            
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                System.out.println(jsonObject.get("title"));
                System.out.println(jsonObject.get("singer"));
            
        
        else
        
            System.out.println(inputObject.get("tracks"));
        
        return "Okay";
    

网址:http://localhost:8080/RESTfulExample/rest/json/check/postMany 输入数据:

[
    "title" : "hai1",
    "singer" : "sree1"
,

    "title" : "hai2",
    "singer" : "sree2"
,

    "title" : "hai3",
    "singer" : "sree3"
]

【讨论】:

我正在尝试完全一样,但是json格式错误 现在问题解决了吗?您发布的数据格式是什么? "患者":[ "firstName":"riya","lastName":"soni", "firstName":"shreya","lastName":"patel" ] 现在我在 Patient 类中有另一个列表,即 List PatientDetails。我用那种方法得到它,比如: for (Patient p : Patient) System.out.println(p.getFirstName()); System.out.println(p.getLastName()); List PatientDetails = p.getPatientDetails(); for(PatientDetails pd : PatientDetails) Sysout(pd.getChargeAmount());系统输出(pd.getItemNumber()); 我的 json 就像: "patient":[ "firstName":"riya","lastName":"soni", "patientDetails":[ "chargeAmount":"riya","itemNumber" :"soni" ] ]。但在这方面得到了例外。 请尝试在帖子中添加示例 Patient 和 PatientDetails 类。同时添加您发送的输入和您得到的异常。检查问题而不是从 cmets 读取它会很容易..【参考方案2】:

通过以下格式尝试 JSON。


  "data" : [
    "firstName":"riya","lastName":"soni", 
    "firstName":"shreya","lastName":"patel"
 ]

先解析JSON并获取data变量,然后用它来获取数组中的每个对象。

【讨论】:

是的,正确的。这种格式工作正常。我使用了错误的格式 但是,我在 Patient 类中有另一个列表,即 List patientDetails。我用那种方法得到它,比如: for (Patient p : Patient) System.out.println(p.getFirstName()); System.out.println(p.getLastName()); List PatientDetails = p.getPatientDetails(); for(PatientDetails pd : PatientDetails) Sysout(pd.getChargeAmount());系统输出(pd.getItemNumber()); 我的 json 就像: "patient":[ "firstName":"riya","lastName":"soni", "patientDetails":[ "chargeAmount":"riya","itemNumber" :"soni" ] ]。但在这方面得到了例外。 可能是您在代码中解析错误,能否请您发布代码和异常? 可能是这个 JSON 格式不对,我需要添加带有名字和姓氏的“patientDetails”。是这样吗? 这样会更有意义。 json格式很好,只是不适合你的情况。

以上是关于在 Postman 的请求正文中传递多个 JSON 数据并使用 Jersy(JXRS) 进入 Java Rest API的主要内容,如果未能解决你的问题,请参考以下文章

邮递员 - 如何将全局变量传递到 JSON 正文

如何通过 Postman 以 JSON 格式在请求正文中发送对象数组?

如何在 Postman Collection 中指定 JSON 请求正文示例

如何使用JSON正文在REST API POST方法中传递多个记录

如何将变量从 JSON 传递到邮递员正文

postman怎么发送json参数