gpt4 book ai didi

java - Gson.toString() 给出错误 "IllegalArgumentException: multiple JSON fields named mPaint"

转载 作者:太空宇宙 更新时间:2023-11-03 11:50:22 25 4
gpt4 key购买 nike

我想将自定义对象转换为字符串并保存在 SharePreferences 中,这是我的最终目标。我尝试了以下失败的行。

String matchString = gson.toJson(userMatches);

日志:

10-11 15:24:33.245: E/AndroidRuntime(21427): FATAL EXCEPTION: main
10-11 15:24:33.245: E/AndroidRuntime(21427): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=4001, result=-1, data=null}
to activity {com.objectlounge.ridesharebuddy/com.objectlounge.ridesharebuddy.activities.RS_CreateTripActivity}:
java.lang.IllegalArgumentException: class android.text.BoringLayout declares multiple JSON fields named mPaint
10-11 15:24:33.245: E/AndroidRuntime(21427): at android.app.ActivityThread.deliverResults(ActivityThread.java:3302)

我尝试了很多选项并相信自定义对象中带有变量的东西。错误日志中需要关注的是 java.lang.IllegalArgumentException: class android.text.BoringLayout declares multiple JSON fields named mPaint。不知道什么是mPaint。

有人知道吗?

最佳答案

根据我的观察,如果您发现 ANY_VARIABLE_NAME 有多个 JSON 字段,那么很可能是因为 GSON 无法将对象转换为 jsonString 以及将 jsonString 转换为对象。你可以尝试下面的代码来解决它。

添加下面的类来告诉 GSON 只保存和/或检索那些声明了序列化名称的变量。

class Exclude implements ExclusionStrategy {

@Override
public boolean shouldSkipClass(Class<?> arg0) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean shouldSkipField(FieldAttributes field) {
SerializedName ns = field.getAnnotation(SerializedName.class);
if(ns != null)
return false;
return true;
}
}

下面是您需要保存/检索其对象的类。为需要保存和/或检索的变量添加 @SerializedName

class myClass {
@SerializedName("id")
int id;
@SerializedName("name")
String name;
}

将 myObject 转换为 jsonString 的代码:

Exclude ex = new Exclude();
Gson gson = new GsonBuilder().addDeserializationExclusionStrategy(ex).addSerializationExclusionStrategy(ex).create();
String jsonString = gson.toJson(myObject);

从 jsonString 获取对象的代码:

Exclude ex = new Exclude();
Gson gson = new GsonBuilder().addDeserializationExclusionStrategy(ex).addSerializationExclusionStrategy(ex).create();
myClass myObject = gson.fromJson(jsonString, myClass.class);

关于java - Gson.toString() 给出错误 "IllegalArgumentException: multiple JSON fields named mPaint",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19315431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com