当我将SdkVersion从27更改为28时,“大小”类对象的gson.toJson结果变为空。 进一步检查,对于Sdk版本28,API 26的仿真器给出了正确的结果。 但是,事实证明,在API28的仿真器中结果为空。 请告诉我如何在SdkVersion 28上正常运行。
-build.gradle
compileSdkVersion 28
targetSdkVersion 28
implementation 'com.google.code.gson:gson:2.8.5'
-源代码
import android.util.Size;
Gson gson = new Gson();
Size s = new Size(30,40);
Log.d("TAG", "s " + gson.toJson(s));
-仿真器日志(Android 8.0.0,API26)
2019-03-29 20:00:01.375 6212-6212/com.example.test D/TAG: s {"mHeight":40,"mWidth":30}
-仿真器日志(Android 9,API28)
2019-03-29 20:03:40.310 8152-8152/com.example.test D/TAG: s {}
答案 0 :(得分:0)
目前,我通过添加自定义序列化解决了该问题。
private class SizeSerializer implements JsonSerializer<Size> {
public JsonElement serialize(Size src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("mHeight", src.getHeight());
jsonObject.addProperty("mWidth", src.getWidth());
return jsonObject;
}
}
Gson gson = new GsonBuilder()
.registerTypeAdapter(Size.class, new SizeSerializer())
.create();
我不知道这是正确的响应还是sdk是否有问题。