为什么总是从json键获得0?

时间:2015-12-05 07:52:36

标签: android json

enter image description here

处理我正在根据指令代码执行某些操作的项目。有一些json键。我在哪里得到所有必需的值,但有问题得到一个。我是初级开发人员。 注意:每当我尝试在我的android代码中获取指令值时,我得到0.can有人建议我现在应该怎么办。

您可以参考我的代码的截图。

enter image description here

从服务器我得到了正确的json响应。

{
    "success": "true",
    "error": "",
    "result": [
        {
            "message": "Network is requesting permission to connect to your phone",
            "instruction": 111,
            "imei_no": "b2b5e4012e3c8b49",
            "socket_user_id": "u566135811c9a2"
        }
    ]
}

4 个答案:

答案 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。现在,您可以访问“指令”。