Android JSONObject异常:消息没有值
我在开发android应用程序时遇到了一个常见的例外 消息没有值 我确信我拥有的JSONObject包含了我想要的: 这是我的JSON对象,您可以在这里对其进行格式化以更好地理解它: 这是我抛出异常的代码Android JSONObject异常:消息没有值,android,json,jsonobject,Android,Json,Jsonobject,我在开发android应用程序时遇到了一个常见的例外 消息没有值 我确信我拥有的JSONObject包含了我想要的: 这是我的JSON对象,您可以在这里对其进行格式化以更好地理解它: 这是我抛出异常的代码 JSONObject oneRowJSONObj = response .getGraphObject()
JSONObject oneRowJSONObj = response
.getGraphObject()
.getInnerJSONObject();
JSONArray dataJSONArray = oneRowJSONObj
.getJSONArray("data");
Log.v(TAG, dataJSONArray.toString());
//Working
for (int i = 0; i < dataJSONArray.length() ; i++) {
JSONObject c = dataJSONArray
.getJSONObject(i);
// Storing JSON item in a Variable
String message = c.getString("message");
Log.v("ONE ROW", message);//Here i get the exception
JSONObject oneRowJSONObj=响应
.getGraphObject()
.getInnerJSONObject();
JSONArray数据JSONArray=oneRowJSONObj
.getJSONArray(“数据”);
Log.v(标记,dataJSONArray.toString());
//工作
for(int i=0;i
所以…您正在迭代数据部分中的项目:
for (int i = 0; i < dataJSONArray.length() ; i++) {
JSONObject c = dataJSONArray.getJSONObject(i);
但不幸的是,它不仅仅包含这些。数组将包含数据小节中的所有键,包括:id、from、message、actions、privacy等
因此,很可能(但不能保证)您的第一次迭代得到的是一个只有键“id”的JSONObject
。因为您没有进行任何类型的检查以查看c
是否有“message”值(它没有),所以您得到了异常。您不能调用getString()
如果密钥不存在。您可以执行if(c.has(“message”)
,也可以调用optString()
为其提供可选参数。谢谢,检查过程正常。它实际上是c.has(“message”)
而不是c.hastring(“message”)
@user38247哎哟-找不到我使用的代码,只是内存不足。将更正。
for (int i = 0; i < dataJSONArray.length() ; i++) {
JSONObject c = dataJSONArray.getJSONObject(i);
String message = c.getString("message");