【问题标题】:How to parse object which is sometimes Json object and sometimes json Array如何解析有时是 Json 对象,有时是 json 数组的对象
【发布时间】:2017-03-04 14:19:08
【问题描述】:

我使用 API,其中一个对象可以是数组,也可以是任何对象,我不知道在哪种情况下它将是对象或数组,所以我不能在某些条件下使用不同的对象。

很遗憾,我无法访问 API 代码,因此无法在那里进行任何更改。我要做的任何技巧都将在客户端。

那么处理这种情况的最佳方法是什么。

编辑:响应示例

.
.
  "ecf":"0",
            "place":{  },
            "mn":"1st Test",
            "teams":[  ],
            "past_ings":[  
               {  
                  "s":{  },
                  "d":{  
                     "a":{  
                        "t":{  
                           "i":"5221",
                           "a":"3",
                           "c":"not out",
                           "dt":null,
                           "fd":"0",
                           "bd":"0",
                           "cb":"no",
                           "b":"1",
                           "r":"0",
                           "sr":"0",
                           "four":"0",
                           "six":"0",
                           "name":"Umesh Yadav"
                        }
                     }
                  }
               }
.
.

对象t可以是数组也可以是对象。

注意:我正在使用 Gson 进行解析,并在我的网络层中使用 Retrofit。

【问题讨论】:

    标签: android parsing gson


    【解决方案1】:
    Object response = json.get("response")
    if (response instanceof JSONArray) {
      // It's an array, cast it as a JSONArray to use it.
    } else {
      // It's an object, cast it as a JSONObject to use it.
    }
    

    【讨论】:

    • 我没有做手动解析。我正在使用 Gson 并在我的网络层进行改造
    • 在这种情况下,你不能告诉 Retrofit 期待一个对象然后进行检查吗?我对 Retrofit 不太熟悉,我会继续阅读。
    【解决方案2】:

    Java 中 Gson 解析 json 时,只需定义 this 为 Object 即可。 之后,如果对象是数组或对象,则您有手册。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 2016-05-10
      • 2013-09-29
      • 1970-01-01
      相关资源
      最近更新 更多