处理我正在根据指令代码执行某些操作的项目。有一些json键。我在哪里得到所有必需的值,但有问题得到一个。我是初级开发人员。 注意:每当我尝试在我的android代码中获取指令值时,我得到0.can有人建议我现在应该怎么办。
您可以参考我的代码的截图。
从服务器我得到了正确的json响应。
{
"success": "true",
"error": "",
"result": [
{
"message": "Network is requesting permission to connect to your phone",
"instruction": 111,
"imei_no": "b2b5e4012e3c8b49",
"socket_user_id": "u566135811c9a2"
}
]
}
答案 0 :(得分:3)
您正在使用不正确的密钥访问JSON值。
获取键值的正确方法是:
int instruction= json.getJSONArray("Result").getJSONObject(0).optInt("instruction")
全球版:
json.getJSONArray("Result").getJSONObject(index_of_array).optInt("instruction")
public long optLong(String name)
返回按名称映射的值(如果它存在且长或可以强制转换为long),否则返回0。请注意,JSON将数字表示为双精度数,因此这是有损的;使用字符串通过JSON传输数字。
http://developer.android.com/reference/org/json/JSONObject.html#optJSONArray(java.lang.String)
答案 1 :(得分:2)
试试这个希望这会有效!
final JSONObject obj = new JSONObject(response.toString());
final JSONArray array= obj.getJSONArray("result");
final int n = array.length();
for (int i = 0; i < n; ++i) {
final JSONObject result= array.getJSONObject(i);
System.out.println(result.getString("message"));
System.out.println(result.getString("instruction"));
}
答案 2 :(得分:1)
看起来你没有从json
检索“结果”。您需要检索结果,该结果应该为您提供一个数组,然后检索数组的第一个对象,以便检索其属性instruction
。
答案 3 :(得分:0)
它是optInt方法的结果:
public int optInt(java.lang.String key)
获取与键关联的可选int值,,如果没有此键,则为零 或者如果值不是数字。如果该值是字符串,则将尝试将其评估为数字。
你应该得到JsonArray“Result”,然后获得第一个JsonObject。现在,您可以访问“指令”。