Передайте несколько данных JSON в тело запроса почтальона и перейдите в API Java Rest с помощью Jersy (JXRS) - PullRequest
0 голосов
/ 25 мая 2018

Я хочу получить несколько данных JSON, которые я передаю в Postman в Body в формате Json.

Если я передаю отдельные данные 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 не вызывает, как передать и получить несколько данных JSON вAPI отдыха.Пожалуйста, дайте мне решение или ссылку для того же.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Проверьте этот небольшой рабочий пример, который ищете ..

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";
    }
}

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

0 голосов
/ 25 мая 2018

Попробуйте JSON, передав в следующем формате:

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

Разобрать JSON и сначала получить переменную данных и использовать ее для получения каждого объекта в массиве.

...