2012-04-15 117 views
2

我有json,我试图用Jackson解析。 JSON看起来像 -解析动态json

coupons: { 
    1: { 
    title: "Mode von", 
    description: "", 
    type: "offer", 
    code: "-", 
    expiry: "0000-00-00", 
    link: "" 
    },  
    2: { 
    title: "Prime 1", 
    description: "", 
    type: "offer", 
    code: "-", 
    expiry: "0000-00-00", 
    link: "http://test.com/" 
    } 
} 

优惠券的数量在这里不是恒定的,并且会根据响应而变化。 我的两难困境是创建相应的java类,它可以容纳这样的对象。

我试着用地图为 -

public class Coupons { 
    Map<String, String>coupons = new HashMap<String, String>(); 
    public Map<String, String> getCoupons() { 
     return coupons; 
    } 
} 

但是 -

System.out.println(coupons.getCoupons().get("type")); 
System.out.println(coupons.getCoupons().get("code")); 

总是让我空。这个json的java class是什么?

回答

2

您的第一级密钥是索引号1,2,3等 所以为了获得类型和代码,您必须指定密钥。

你可以这样做:

var coupons = coupons.getCoupons(); //<--breakpoint to see if this is really populated. 
foreach(String key in coupons.Keys){ //<- pseudo code, iterate over keys 
    var obj = coupons.get(key); 
    var type = obj.get("type"); 
    etc.. 
} 

希望这可以帮助你前进

+0

我觉得我不能只是做 - '地图优惠券=新的HashMap ( );'as'coupons.getCoupons()'不会给我任何Map对象 – Tarun 2012-04-15 16:34:37

+0

好的,我将地图改为 - 'private Map > coupons = new HashMap >();'但解决方案的关键是按照您的建议获取地图的关键点。 – Tarun 2012-04-15 17:01:48