首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Response处理JSON response -基于response的相同属性的JsonArray和JsonObject

基于Response处理JSON response -基于response的相同属性的JsonArray和JsonObject
EN

Stack Overflow用户
提问于 2018-11-04 19:56:39
回答 2查看 316关注 0票数 1

我得到了两种类型的Json响应。

一个是:

代码语言:javascript
复制
{
  "status": true,
  "datetime": "",
  "data": [
    {
      "name": "xxx"
    }
  ]
}

另一种格式是:

代码语言:javascript
复制
{
  "status": true,
  "datetime": "",
  "data":
  {
    "name": "aaa"
  }
}

对象"data“将是某个响应上的JsonObject,它将是某个响应上的JsonArray,如何处理这两种类型的请求。

我正在使用Retrofit api进行通信。

EN

回答 2

Stack Overflow用户

发布于 2018-11-04 20:07:54

如果您使用的是GsonConverterFactory,则可以使用JsonElement来表示JsonObjectJsonArray,因为它们都扩展了JsonElement

然后,您可以使用方法JsonElement#isJsonArray()进行检查并执行相应的操作。

票数 0
EN

Stack Overflow用户

发布于 2018-11-04 20:16:36

您可以获取JsonElement形式的“数据”并检查它:分别是JsonObject或JsonArray。例如,您可以编写自定义JsonDeserializer

代码语言:javascript
复制
class CustomDeserializer implements JsonDeserializer<YourModel> {

    @Override
    public YourModel deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        JsonObject responseObj = json.asJsonObject;
        JsonElement data = responseObj.get("data");
        // get your dinamic data
        if (data.isJsonObject()) {
        // parse as object
        } else if (data.isJsonArray()) {
        // parse as array
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53140565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档