2014-12-12 5 views
0

json 문자열에서 javabean을 가져오고 싶습니다. javabean은 key를 하나의 javabean으로, value를 javabean으로 갖는 하나의 맵을 포함합니다. 하지만 다음과 같은 오류 메시지가 나타납니다. TestBean testBean2 = gson.fromJson (json, new TestBean(). getClass());json-deserialization 할 때 JsonParseException이 발생했지만 개체가 발견되었지만 발견 됨

Google 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; 
    } 

} 

답변

0

시도

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

정도

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

다음

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