如何根据JSON的Java格式控制从JSON中获取的数据?
我试图将JSON文件解析为Java对象。我正在使用OkHttpClient获取这个JSON。问题是,返回的JSON可以有两种不同的格式。如果URL上的查询参数正确,则JSON格式如下:如何根据JSON的Java格式控制从JSON中获取的数据?,java,json,Java,Json,我试图将JSON文件解析为Java对象。我正在使用OkHttpClient获取这个JSON。问题是,返回的JSON可以有两种不同的格式。如果URL上的查询参数正确,则JSON格式如下: { "debugOutput": { "pathCalculationTime": 0, "pathTimes": [], "precalculationTime": 0, "renderingTime": 0, "timed
{
"debugOutput": {
"pathCalculationTime": 0,
"pathTimes": [],
"precalculationTime": 0,
"renderingTime": 0,
"timedOut": true,
"totalTime": 0
},
"error": {
"id": 0,
"message": "PLAN_OK",
"missing": [],
"msg": "string",
"noPath": true
},
"plan": {
"date": 0,
"from": {},
"itineraries": [],
"to": {}
},
"requestParameters": {
"app_id": "string",
"app_key": "string",
"arriveBy": "string",
"date": "string",
"fromPlace": "string",
"maxWalkDistance": "string",
"mode": "string",
"time": "string",
"toPlace": "string"
}
}
但是,如果请求中有任何内容不正确,我将得到一个JSON文件,如下所示:
{
"status": "error",
"error":"Unexpected error"
}
如果查询参数正确,我只想存储对象计划
上的数据,到目前为止,我已经完成了以下工作:
JsonObject jsonObject = JsonParser.parseString(jsonData).getAsJsonObject(); //jsonData is the Json file as a String.
JsonObject planJson = jsonObject.get("plan").getAsJsonObject();
plan = gson.fromJson(planJson.toString(), Plan.class);
但如果JSON数据类似于第二种格式,这显然会引发异常
我如何知道我将获得哪种格式?通常,当出现错误时,API将返回一个http状态代码,该代码不是200-400、500或类似的值。我同意@stringy05,但如果不是,您也可以执行
if(planJson.has(“status”)){…
。或者您可以使用try/catch
将您的fromJson
调用包装起来,并在抛出错误时转换为错误格式。