Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.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
Android JSON org.JSON.JSONEXCEPTION:No Value for"&引用;_Android_Json - Fatal编程技术网

Android JSON org.JSON.JSONEXCEPTION:No Value for"&引用;

Android JSON org.JSON.JSONEXCEPTION:No Value for"&引用;,android,json,Android,Json,我尝试使用Android从JSON服务器响应(此处为API-)获取SpeedLimit值: { “答复”:{ “元信息”:{ “地图版本”:“2015Q1”, “ModuleVersion”:“0.2”, “接口外翻”:“4.2”, “时间戳”:“2015-08-25T16:15:23.540Z” }, “链接”:[ { “_类型”:“PrivateTransportLinkType”, “LinkId”:“-931447246”, “形状”:[ "52.5309486,13.38447", "

我尝试使用Android从JSON服务器响应(此处为API-)获取SpeedLimit值:

{
“答复”:{
“元信息”:{
“地图版本”:“2015Q1”,
“ModuleVersion”:“0.2”,
“接口外翻”:“4.2”,
“时间戳”:“2015-08-25T16:15:23.540Z”
},
“链接”:[
{
“_类型”:“PrivateTransportLinkType”,
“LinkId”:“-931447246”,
“形状”:[
"52.5309486,13.38447",
"52.5306702,13.38344",
"52.5305786,13.38307"
],
“限速”:13.89,
“DynamicPeedInfo”:{
“交通速度”:8.89,
“我”:11.6,
“基本速度”:13.89,
“基准时间”:7.4
},
“地址”:{
“标签”:“Invalidenstraße”,
“国家”:“德”,
“国家”:“柏林”,
“郡”:“柏林”,
“城市”:“柏林”,
“地区”:“米特”,
“街道”:“Invalidenstraße”
}
}
]
}
}

下面是我正在使用的代码,用于从JSON中获取结果:

try {
        JSONObject response = new JSONObject(jsonResult);
        JSONObject test = response.getJSONObject("Link");
        String test1 = test.getString("SpeedLimit");

        Toast.makeText(getApplicationContext(), test1,
                Toast.LENGTH_SHORT).show();
} catch (Exception e) {
        Toast.makeText(getApplicationContext(), "Error" + e.toString(),
                Toast.LENGTH_SHORT).show();
    }
我一直得到以下例外情况:

org.json.JSONEXCEPTION: No Value for Link
我必须在JSON中询问错误的信息,但我似乎无法解决这个问题


谢谢大家

Link
JSONArray在
Response
JSONObject中,而不是在根JSONObject中

因此,首先需要从
Response
中获取
Response
JSONObject,然后获取
Link
JSONArray:

// Response JSONObject
JSONObject responseJSONObject = response.getJSONObject("Response");
// get Link JSONArray from responseJSONObject
JSONArray linkJSONArray = responseJSONObject.getJSONArray("Link");
“链接”是一个JSONArray,而不是JSONObject。 因此,代码应该是:

try {
    JSONObject response = new JSONObject(jsonResult);
    JSONArray test = response.optJSONArray("Link");
    if (test != null && test.length() > 0) {
        JSONObject test = test.optJSONObject(0);
        if( test != null) {
            String test1 = test.getString("SpeedLimit");
            Toast.makeText(getApplicationContext(), test1, Toast.LENGTH_SHORT).show();
            return;
        }
    }
    Toast.makeText(getApplicationContext(), "No speed limitation data found", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
    Toast.makeText(getApplicationContext(), "Error" + e.toString(), Toast.LENGTH_SHORT).show();
}

你还需要考虑JSnOrrar数组中包含的超过1个JSONObjor的情况。

除非我丢失了一些东西,Link是一个数组。嗯,我确实试过了。我再试了一次,得到了相同的错误,但是-org.json.JSONEXCEPTION:响应没有值。@user3882091为您指定了
jsonResult
的特定值(假设正确记录了该值)以及prosper提供的特定代码,没有理由不工作。您的文档中没有名为
Link
的JSONObject。我似乎无法从JSON中获得任何信息。不管我说什么,我都会犯同样的错误。谢谢你的帮助!