gpt4 book ai didi

android - GSON : Parsing JSON key value with sometime Object & sometime Array

转载 作者:行者123 更新时间:2023-11-29 23:55:05 26 4
gpt4 key购买 nike

我正在使用 GSON 来解析 JSON 字符串,但有一个键包含 Json,它有时是对象,有时是数组。 所以请帮助我使用 gson 将它解析为模型类。

Resonse with Array

{
"key" : "test",
"value" : [
{
"id" : 1,
"name": "abc"
},
{
"id" : 2,
"name": "xyz"
}
]
}

Resonse with Object

{
"key" : "test",
"value" : {
"id" : 1,
"name": "abc"
}
}

MyModel.java

public class MyModel implements Serializable {
@SerializedName("key")
@Expose
public String key;

@SerializedName("value")
@Expose
public ArrayList<ValueModel> value;

public class ValueModel implements Serializable {
@SerializedName("id")
@Expose
public String id;

@SerializedName("name")
@Expose
public String name;
}
}

但由于数据类型数组和对象,它总是进入异常状态我也尝试过使用 JsonDeserializer 但我认为我没有很好地实现它所以请帮我解决它并解析json

最佳答案

简单的尝试作为对象访问然后检查对象的instanceof 并根据它解析数据

String json="";

JSONObject jsonMain=new JSONObject(json);

Object objectType=jsonMain.get("value");
if (objectType instanceof JSONObject) {
JSONObject jsonObjectType=(JSONObject)objectType;
} else if (json instanceof JSONArray) {
JSONArray jsonArrayType=(JSONArray)objectType;
}

如果你使用的是 JSONObject

  if (objectType  instanceof JSONObject) {
UserDetails details = new Gson().fromJson(objectType, UserDetails.class);

} else if (objectType instanceof JSONArray) {
Type listType = new TypeToken<List<UserDetails>>() {
}.getType();
List<UserDetails> list = new Gson().fromJson(objectType, listType);
userDetailsList.addAll(list);
}

关于android - GSON : Parsing JSON key value with sometime Object & sometime Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50465196/

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