API每次都使用不同的JSON类型进行响应

时间:2017-11-21 11:00:19

标签: java android json deserialization json-deserialization

我从JSON API获取数据。我使用GSON解析我的Android应用程序的数据。问题是,同一个变量的值在一种情况下是JSONArray,但在另一种情况下,它是一个JSONObject。因此,我无法编写GSON可用于解析数据的Java类。

第一反应 - "方向"是一个数组

{  
     "route":{  
     "time_min":"10",
     "directions":{  
     "direction":[ 

        {  
           "direction_description":"Dummy text.",
           "direction_number":"1"
        },

        {  
           "direction_description":"Dummy text.",
           "direction_number":"2"
        },

        {  
           "direction_description":"Dummy text.",
           "direction_number":"3"
        }

      ]}}}

第二反应 - "方向"是一个对象

{  
     "route":{  
     "time_min":"10",
     "directions":{  
     "direction": 
        {  
           "direction_description":"Dummy text.",
           "direction_number":"1"
        }

       }}}

我应该如何编写GSON将用于解析的Java类?

2 个答案:

答案 0 :(得分:1)

首先,尝试选择JSONObject

JSONObject jOBJ = parentOBJ.optJSONObject("direction");

如果jOBJ的值为null,请尝试获取JSONArray -

JSONOArray jARR = parentOBJ.optJSONArray("direction");

PS, 在需要时使用try.. catch()

答案 1 :(得分:0)

您可以使用 instance of

  

java instanceof运算符用于测试对象是否为   指定类型的实例(类或子类或接口)。

Object obj= jsonOBJ.get("direction");
if (obj instanceof JSONArray) 
  {


  }
else
  {
   // It's JSONObject 
  }