Android JSONObject异常:消息没有值

Android JSONObject异常:消息没有值,android,json,jsonobject,Android,Json,Jsonobject,我在开发android应用程序时遇到了一个常见的例外 消息没有值 我确信我拥有的JSONObject包含了我想要的: 这是我的JSON对象,您可以在这里对其进行格式化以更好地理解它: 这是我抛出异常的代码 JSONObject oneRowJSONObj = response .getGraphObject()

我在开发android应用程序时遇到了一个常见的例外

消息没有值

我确信我拥有的JSONObject包含了我想要的:

这是我的JSON对象,您可以在这里对其进行格式化以更好地理解它:

这是我抛出异常的代码

                            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");