我已经在这个问题上停留了3天。
说我有一个像这样的JSON字符串{"a": 0, "b": true, "c": 25, "d": 4.0, "e": false}
。
我尝试使用此方法将其变成对象:
Gson gson = new Gson();
MyObject myObject = gson.fromJson(jsonString, MyObject.class);
这将返回一个空对象。意味着myObject将是这样的:
我尝试了其他方法来从JSON字符串中获取值,并且它们始终提供JSONException。之所以gson.fromJson(jsonString, MyObject.class)
不起作用,可能是因为ProGuard混淆使MyObject的变量名与JSON字符串中的变量名不同。如何将此字符串转换为MyObject的原始形式?
如果你是正确的且容易混淆,那就要注册自己的了JsonDeserializer
。这是一个简单的例子。首先,您必须实现它
JsonDeserializer<MyObject> deserializer = new JsonDeserializer<MyObject>() {
@Override
public UserDate deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
MyObject myObject = new MyObject();
// Write the actual deserialization logic for MyObject class here
return myObject;
}
};
然后,您必须注册它。
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(MyObject.class, deserializer);
Gson customGson = gsonBuilder.create();
MyObject myObject = customGson.fromJson(myObject, MyObject.class);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句