Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据JSON的Java格式控制从JSON中获取的数据?_Java_Json - Fatal编程技术网

如何根据JSON的Java格式控制从JSON中获取的数据?

如何根据JSON的Java格式控制从JSON中获取的数据?,java,json,Java,Json,我试图将JSON文件解析为Java对象。我正在使用OkHttpClient获取这个JSON。问题是,返回的JSON可以有两种不同的格式。如果URL上的查询参数正确,则JSON格式如下: { "debugOutput": { "pathCalculationTime": 0, "pathTimes": [], "precalculationTime": 0, "renderingTime": 0, "timed

我试图将JSON文件解析为Java对象。我正在使用OkHttpClient获取这个JSON。问题是,返回的JSON可以有两种不同的格式。如果URL上的查询参数正确,则JSON格式如下:

{
    "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
调用包装起来,并在抛出错误时转换为错误格式。