如何将GSON与混合类型字段一起使用?

{
  'field': false
}

// or

{
  'field': [
    1,2,3,4
  ]
}


我的GSON课:

public class MyModel {

    public  HashMap<ArrayList,Boolean>  blockedusers;

}

最佳答案

是的,这是可能的,但是您必须处理json是数组还是原始类型。尝试下面的代码:

String case1 = "{'field':false}";
String case2 = "{'field':[1,2,3,4]}";
JsonElement jsonElement = ((JsonObject)(new JsonParser().parse(case1))).get("field");

if(jsonElement instanceof JsonArray) {
    JsonArray jsonArray = (JsonArray)jsonElement;
    if(jsonArray != null && jsonArray.size() > 0) {
        for (JsonElement aJsonElement : jsonArray) {
            // TODO: handle json element inside array
            System.out.println(aJsonElement);
        }
    }
} else if (jsonElement instanceof JsonPrimitive) {
    boolean value = jsonElement.getAsBoolean();
    System.out.println("value:" + value);
}


您也可以编写自定义TypeAdapter。请参见my answer for another question

09-28 10:09