json-deserialization时的JsonParseException,但是找到了Expected Object

时间:2014-12-12 10:57:48

标签: java collections gson json-deserialization

我想从json字符串获取javabean。 javabean包含一个映射,其中key作为一个javabean,值作为javabean。但我在网上得到了以下错误 TestBean testBean2 = gson.fromJson(json,new TestBean()。getClass());

我正在使用谷歌gson。 请帮我解决这个问题。

public class Test
{
    public static void main(String[] args) 
    {
        Map<ProductBean, OfferBean> duplicateOfferMap = new HashMap<ProductBean, OfferBean>(0);
        ProductBean productBean = new ProductBean();
        OfferBean offerBean = new OfferBean();
        duplicateOfferMap.put(productBean, offerBean);

        TestBean testBean1 = new TestBean();
        testBean1.setDuplicateOfferMap(duplicateOfferMap);

        Gson gson = new GsonBuilder().setPrettyPrinting ().disableHtmlEscaping ().create ();
        String json = gson.toJson(testBean1, new TestBean().getClass());

        TestBean testBean2 = gson.fromJson(json, new TestBean().getClass());
    }
}

public class TestBean
{
    private Map<ProductBean, OfferBean> duplicateOfferMap = new HashMap<ProductBean, OfferBean>(0);

    public Map<ProductBean, OfferBean> getDuplicateOfferMap() {
        return duplicateOfferMap;
    }

    public void setDuplicateOfferMap(Map<ProductBean, OfferBean> duplicateOfferMap) {
        this.duplicateOfferMap = duplicateOfferMap;
    }

}

1 个答案:

答案 0 :(得分:0)

尝试

String json = gson.toJson(testBean1, TestBean.class);

左右

Type myType= new TypeToken<MyBean>() {}.getType();

然后

String json = gson.toJson(testBean1, myType);