在 java 中通过 REST 调用发布和检索 JSON 对象

Posting and retrieving a JSON object via REST call in java

我有一个 Rest 端点(基于球衣),它接受一个 JSON 对象,我通过将其映射到 POJO 来检索该对象,例如

@POST
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public void getResult(PojoClass pojo)

我的 PojoClass 是:

@XmlRootElement
public class PojoClass {
private List<String> list;

public List<String> getList() {
    return list;
}

public void setList(List<String> list) {
    this.list = list;
}
}

现在,如果我通过 curl 命令发送 json 数据:

curl -H "Content-type: application/json"  -i -X  'POST' -d @/tmp/xyz.json  http://127.0.0.1:8080/test

我能够将它正确映射到我的 PojoClass 中。

xvz.json 是:

{
  "list":[
     "123",
     "456"
    ]
}

PojoClass 列表将包含两个元素(“123”和“456”)。

但是如果从 JAVA 调用 post。我正在发送与有效负载相同的 json 结构,它作为一个 PojoClass 接收,列表作为单个元素,这是一个连接,如 ["123","456"]

我正在使用 "HttpURLConnection" 从 java 拨打 post 电话。

是否需要额外的东西才能获得与 cURL 命令相同的结果?

这是 JSONObject 和 JSONArray 之间的库冲突,它破坏了请求负载中的 JSON。 当我处理这个错误时,请求很顺利,一切都很顺利。