带有gson的通用解析器(键和内容动态属性)

时间:2016-01-18 14:44:28

标签: android json gson

我想使用 Gson

创建一个通用解析器

我该怎么办? (对于以下json 属性

JSON:

{  
   "sku":{  
      "id":"121221",
      "sequence":0,
      "ean":"1121212121121",
      "attributes":{  
         "clothes_size":"S",
         "color":"black"
      }
   }
}

类别:

public class Attributes {
    public String label;
    public String value;
}

2 个答案:

答案 0 :(得分:2)

如果您只需要映射属性,请使用通用Map作为属性:

public SKU {
    private String id;
    private Long sequence;
    private String ean
    private Map<String, String> attributes;
}

答案 1 :(得分:1)

第一步:您必须为该JSON制作模态类,并按如下方式命名:

<强> SkuMain.java

public class SkuMain{
   Sku sku;

  public Sku getSku{
    return sku;
  }
}

<强> Sku.java

public class Sku {
  String id;
  String sequence;
  String ean;
  Map<String, String> attributes;

  public attributes getAttributes{
    return attributes;
  }
}

第二步:使用Gson进行解析,如下所示:

SkuMain objSkuMain = new Gson(). fromJson(yourJsonString, SkuMain.class);
Sku objSku = objSkuMain.getSku();
String dynamicAttributes = new Gson.toJson(objSku.getAttributes());
Type mapType = new TypeToken<Map<String, String> >() {}.getType(); // define generic type
Map<Integer, Result> mapAttributes= gson.fromJson(new InputStreamReader(dynamicAttributes), mapType);

对于Sku类,您必须制作getter setter方法,这些方法也会为您提供属性字段。