Android JSON org.JSON.JSONEXCEPTION:No Value for"&引用;
我尝试使用Android从JSON服务器响应(此处为API-)获取SpeedLimit值: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", "
{
“答复”:{
“元信息”:{
“地图版本”:“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中获得任何信息。不管我说什么,我都会犯同样的错误。谢谢你的帮助!