这是我通过POST请求发送的json
{
"PIds" : [ "MOB123", "ELEC456"]
}
这是我的类,它接收JSON,
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("/GetProductsInfo")
public List<ProductDetails> getProductsInfo(ProductIds productIds) {
System.out.println(productIds + " ");
DBCursor<ProductDetails> dbCursor = collection.find(DBQuery.in("pid", productIds.getPIds()));
List<ProductDetails> products = new ArrayList<>();
while (dbCursor.hasNext()) {
ProductDetails product = dbCursor.next();
products.add(product);
}
return products;
}
我将JSON数组转换为&#39; ProductIds&#39;对象,这是我的POJO类
public class ProductIds
{
@JsonProperty("PIds")
private List<String> pIds;
public List<String> getPIds()
{
return pIds;
}
public void setPIds(List<String> Pids)
{
this.pIds = Pids;
}
@Override
public String toString()
{
return "ClassPojo [PIds = "+ pIds +"]";
}
}
这里的问题是JSON没有被填充到java对象&product;产品中。是NULL,我不知道为什么。我是杰克逊新手可以帮助我。谢谢
答案 0 :(得分:0)
您使用的是JAXB吗?泽西? fasterxml.jackson?我得到的印象是你同时使用了几个
RestClass:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Path("/GetProductsInfo")
public List<ProductDetails> getProductsInfo(@RequestBody ProductIds productIds) {
// etc
}
对于JAXB:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ProductIds {
@XmlElement("PIds")
private List<String> pIds;
public List<String> getPIds() {
return pIds;
}
public void setPIds(List<String> Pids) {
this.pIds = Pids;
}
@Override
public String toString() {
return "ClassPojo [PIds = " + pIds + "]";
}
}
否则请看一下:
答案 1 :(得分:0)
您是否尝试使用.getJSONArray()获取ID? 使用org.json库。
JSONObject obj = new JSONObject(jsoninput);
JSONArray jsonArray = obj.getJSONArray("PIds");