当前位置: 首页 > 知识库问答 >
问题:

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

羊时铭
2023-03-14

我想获取多个JSON数据,我以Json格式以正文的形式传递给邮递员。

如果我传递单个json数据,例如:{"firstName":"ria","lastName":"soni"}",这样我就可以在下面提到的JavaAPI中获取它:

@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":"ria","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数据来点击邮递员的请求时,就像我提到的,甚至getPateint详细信息方法也没有调用,如何在Rest API中传递和获取多个json数据。请给我相同的解决方案或参考链接。

共有2个答案

桂玉石
2023-03-14

通过以下格式传递尝试JSON。

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

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

闻人越
2023-03-14

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

曲目.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"
}]
 类似资料:
  • 我对邮递员有意见... 但是,当我尝试以 raw(json) 格式的正文发送相同的请求时,我得到了这个: 我试图通过Angular 5将数据发送到Drupal 8后端。 谢谢你!

  • 如何将请求主体设置在一个位置,并在多个请求中重用它,以便在构建更改时节省维护测试脚本的工作量。 我正在使用postman在动态变化的环境中进行测试自动化。json主体结构可能会从构建更改为另一个,我必须单独更新每个请求。 这是一个示例体,我在其中传递全局setter的值 这些变量在预请求中定义为 TIA

  • 我有一个邮递员预请求脚本添加一个HMAC密钥到一个请求。除非身体中有一个环境变量,否则这种方法很有效。所以如果我有下面的身体 当发送请求时将键值设置为sample时,正文包含以下内容 这是我所期望的。但是,在访问预请求脚本中的请求正文时, 我得到以下信息 我怎样才能获得变量被替换的主体,以便它是将被发送到服务器的内容?

  • 我试图从环境变量替换Postman中JSON主体的值,该值实际上被替换,但它在传递给POST请求时将JSON转换为字符串,因此请求最终失败,因为POST请求需要JSON主体。 例如,这里是下面的请求,变量已经在Postman中用值声明 发送请求后,整个正文将转换为字符串。知道如何保持正文是JSON,即使替换了变量的值并且不让它转换为字符串?

  • 我有一个带有更新方法的控制器。该方法应在RequestBody中获取产品,但这会导致请求错误。我和邮递员一起发了一封邮件。JSON作为原始JSON发送,请求内容类型为application/JSON。 正文中的JSON是 请求响应不良的原因是什么?JSON似乎格式化正确,当没有正文时调用更新方法。