如何将JSON数组转换为java对象

时间:2015-06-25 11:14:25

标签: java json api jackson

这是我通过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,我不知道为什么。我是杰克逊新手可以帮助我。谢谢

2 个答案:

答案 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 + "]";
    }
}

否则请看一下:

Convert a JSON string to object in Java ME?

How to convert the following json string to java object?

答案 1 :(得分:0)

您是否尝试使用.getJSONArray()获取ID? 使用org.json库。

JSONObject obj = new JSONObject(jsoninput);

JSONArray jsonArray = obj.getJSONArray("PIds");