android-使用动态数组和对象处理gson

android-使用动态数组和对象处理gson,第1张

概述我从API得到响应,因为如果存在数据,那么它就是返回对象,而当数据不存在时,它就是返回空白数组.我有用于序列化此模型的模型.这是模特班@SerializedName("local")publicLocal_local=newLocal();publicclassLocal{@SerializedName("total")

我从API得到响应,因为如果存在数据,那么它就是返回对象,而当数据不存在时,它就是返回空白数组.
我有用于序列化此模型的模型.
这是模特班

    @Serializedname("local")    public Local _local  = new Local();          public class Local{      @Serializedname("total")            public String _total;            @Serializedname("provIDers")            public  ArrayList<ProvIDersDetails> _provIDers = new ArrayList<>();            public class ProvIDersDetails{                @Serializedname("ID")                public String _ID;                @Serializedname("image")                public String _image;            }            @Serializedname("admin")            public transIEnt admin admin = new admin();            public class admin{               @Serializedname("ID")                public String _ID;                @Serializedname("first_name")                public String _first_name;                @Serializedname("last_name")                public String _last_name;            }           @Serializedname("orgn")            public Organization _organization = new Organization();            public class Organization{                @Serializedname("name")                public String _ name;            }        }

这是我从API获得的部分响应

       "local":{       "provIDers":[        {        "ID":"1180",         "image":"photo.png"        },         {        "ID":"1180",         "image":"photo.png"         },         {        "ID":"1180",         "image":"photo.png"        }        ],       "admin":{       "ID":"1180",      "first_name":"nqgnerq",       "last_name":"gnejbeqp",      },     "orgn":{      "name":"organization name"      }      }

这是当数据不存在时我得到的另一种形式

     "local":{     "total":0,     "provIDers":[     ],     "admin":[      ],    "orgn":{      "name":"organization name"      }     }

我检查了许多变通方法,但都失败了,因为我想在我的pojo课堂中处理它.有任何解决办法,请提出建议.

解决方法:

您可以使用“ JsonDeserializer”进行处理.这里是一个示例.
 使类ProvIDersDetails实现Serializable

创建一个这样的新类

public class ProvIDersDetailsList {    public ArrayList<ProvIDersDetails> getDetails() {        return provIDersDetails;    }    ArrayList<ProvIDersDetails> provIDersDetails= new ArrayList<>();}

现在编写反序列化器.

 public class PhotoAlbumDeserializer implements JsonDeserializer {        @OverrIDe        public Object deserialize(JsonElement JsonElement, Type type, JsonDeserializationContext JsonDeserializationContext) throws JsonParseException {            ProvIDersDetailsList provIDersDetailsList= new ProvIDersDetailsList ();            JsonObject JsonObject = JsonElement.getAsJsonObject();            if (JsonObject != null) {                JsonElement usersFIEld = JsonElement.getAsJsonObject().get("provIDers");                if (usersFIEld == null || usersFIEld.isJsonNull() || usersFIEld.isJsonPrimitive())                    ; // if is null or is a primitive type will return an empty result                else if (usersFIEld.isJsonObject()) {                    provIDersDetailsList.getDetails().add((ProvIDersDetails) JsonDeserializationContext.deserialize(usersFIEld, ProvIDersDetails.class));                } else if (usersFIEld.isJsonArray()) {                    Type listofUserType = new Typetoken<List<ProvIDersDetails>>() {                    }.getType();                    provIDersDetailsList.getDetails().addAll((Collection<? extends ProvIDersDetails>) JsonDeserializationContext.deserialize(usersFIEld, listofUserType));                }            }            return provIDersDetailsList;        }    }

现在这样称呼它

GsonBuilder gsonBuilder = new GsonBuilder();gsonBuilder.registerTypeAdapter(ProvIDersDetailsList.class, new PhotoAlbumDeserializer());Gson gson = gsonBuilder.create();ArrayList<ProvIDersDetails> provIDersDetails = gson.fromJson(JsonString, ProvIDersDetailsList.class);

这是使用Gson https://stackoverflow.com/a/16591621/3111083做到的链接

总结

以上是内存溢出为你收集整理的android-使用动态数组和对象处理gson全部内容,希望文章能够帮你解决android-使用动态数组和对象处理gson所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1120790.html

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

发表评论

登录后才能评论

评论列表(0条)

保存