我有一个这样的模型:
class MyModel{
String id;
String name;
String field;
//Getters and setters
}
我正在使用Gson使用以下代码解析json
// Returns the json containing list of objects
// with properties supplied to the method
String response = getResponse(new String[] { "id", "name", "value",
{A variable field whose value is determined at runtime}});
MyModel obj = new Gson().fromJson(response,
new TypeToken<List<MyModel>>() {}.getType());
该代码适用于3个预定义字段。有一个第四个字段,其名称是变量(在运行时确定),我无法在模型中创建硬编码字段,因为该字段未修复。如何解析一个场是动态的json?
答案 0 :(得分:0)
您可以尝试以下选项:
Gson 2.5支持同一变量的多个字段名称。如果在运行时确定该值但该值的集合是有限的,那么您可以执行以下操作:
@SerializedName(value="name1", alternate={"name2", "name3"}) String b;
创建自定义反序列化器:
public static class YourModelDeserializer implements JsonDeserializer<YourModel> {
@Override
public YourModel deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException
{
/* Deserialize here */;
}
}
答案 1 :(得分:0)
您可以通过以下代码获取所有关键名称:
JSONObject jsonObject = new JSONObject(response);
Iterator keys = jsonObject.keys();
while(keys.hasNext()) {
String dynamicKey = (String)keys.next();
JSONObject currentDynamicValue = jsonObject.getJSONObject(dynamicKey);
}
您可以使用ArrayList
或Array
保存所有密钥名称。