你必须分析你自己的(例如与SparseArray
)Users
类:
public static class Users implements JsonDeserializer<User> {
public SparseArray<String> values = new SparseArray<>();
@Override
public Users deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Users u = new Users();
if (json.isJsonObject()) {
JsonObject obj = (JsonObject) json;
for (Map.Entry<String, JsonElement> elem : obj.entrySet()) {
if (Util.isInteger(elem.getKey())) {
u.values.put(Integer.parseInt(elem.getKey()), elem.getValue().getAsString());
}
}
}
return u;
}
}
为了使这项工作增加TypeAdapter到Gson
例如:
private static GsonConverter getConverter() {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Users.class, new Users());
return new GsonConverter(builder.create());
}
而且在RestAdapter
情况下使用此转换器:
mInstance = new RestAdapter
.Builder()
.setConverter(getConverter())
.//
.create(...)
对于初学者来说,这将是一个'名单',不能简单地认为是返回 –
njzk2
然后你需要为'名单' –
njzk2
@ njzk2'名单一个TypeAdapter了''User'?我不这么认为。 Json是JsonObject而不是数组。 –
skywall