java–Gson.toString()给出错误“IllegalArgumentException:多个名为mPaint的JSON字段”

java–Gson.toString()给出错误“IllegalArgumentException:多个名为mPaint的JSON字段”,第1张

概述我想将自定义对象转换为字符串并保存在SharePreferences中,这是我的最终目标.我尝试下面的线失败了.StringmatchString=gson.toJson(userMatches);Logcat:10-1115:24:33.245:E/AndroidRuntime(21427):FATALEXCEPTION:main10-1115:24:33.245:E/AndroidRuntime(21427

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

String matchString = gson.toJson(userMatches);

Logcat:

10-11 15:24:33.245: E/AndroIDRuntime(21427): FATAL EXCEPTION: main10-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 mPaint10-11 15:24:33.245: E/AndroIDRuntime(21427): at androID.app.ActivityThread.deliverResults(ActivityThread.java:3302)

我尝试了很多选项,并相信自定义对象中的变量.关注错误日志的是java.lang.IllegalArgumentException:class androID.text.BoringLayout声明了多个名为mPaint的JsON字段.不知道什么是mPaint.

任何人有任何想法?

解决方法:

根据我的观察,如果你发现ANY_VARIABLE_name有多个JsON字段,那很可能是因为GSON无法将对象转换为JsonString而JsonString转换为object.你可以尝试下面的代码来解决它.

添加以下类以告诉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:多个名为mPaint的JSON字段”全部内容,希望文章能够帮你解决java – Gson.toString()给出错误“IllegalArgumentException:多个名为mPaint的JSON字段”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存