有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想获得多个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数据来满足postman的请求时,即使getPateintDetails方法也没有调用,如何在Rest API中传递和获取多个JSON数据。请给我同样的解决方案或参考链接


共 (2) 个答案

  1. # 1 楼答案

    请按以下格式传递JSON

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

    首先解析JSON并获取数据变量,然后使用它获取数组中的每个对象

  2. # 2 楼答案

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

    追踪。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";
        }
    }
    

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

    [{
        "title" : "hai1",
        "singer" : "sree1"
    },
    {
        "title" : "hai2",
        "singer" : "sree2"
    },
    {
        "title" : "hai3",
        "singer" : "sree3"
    }]
    

    enter image description here