在 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。
当我处理这个错误时,请求很顺利,一切都很顺利。
我有一个 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。 当我处理这个错误时,请求很顺利,一切都很顺利。