当条件等于 25 时,for 循环只打印一次 String
For loop printing String only once when the condition is equal to 25
我正在尝试使用 Facebook Graph API 在 JSON
中打印出一个对象。
这是我的代码:
try{
JSONArray data = innerJson.getJSONArray("data");
Log.d("innerDataLength", String.valueOf(data.length()));
for (int i = 0; i<data.length(); i++) {
String message = data.getJSONObject(i).getString("message");
Log.d("message", message);
}
} catch (JSONException e) {
Log.d("exception", e.getMessage());
}
这是输出:
D/innerDataLength: 25
D/message: "blah blah blah"
D/exception: No value for message
如您所见,condition
即 data.length()
是 25 那么为什么我只打印一次消息?
请注意,您遇到了一个例外:
D/exception: No value for message
表示JSONArray
中的第二个对象没有message
属性。看起来是可选的,所以你需要先检查 message
属性 是否存在。
更新:
try{
JSONArray data = innerJson.getJSONArray("data");
Log.d("innerDataLength", String.valueOf(data.length()));
for (int i = 0; i < data.length(); i++) {
JSONObject obj = data.getJSONObject(i);
if (obj.has("message")) {
String message = obj.getString("message");
Log.d("message", message);
}
if (obj.has("story")) {
String story= obj.getString("story");
Log.d("story", story);
}
}
} catch (JSONException e) {
Log.d("exception", e.getMessage());
}
innerJson.getJSONArray("data") 数组中的某些对象没有消息
检查我说的注释循环内的行并打印我将得到 0 到 24
避免用try和catch包围解析message的语句,避免解析不包含message的对象
你也可以打印data.getJSONObject(i).toString 来查看解析对象
我正在尝试使用 Facebook Graph API 在 JSON
中打印出一个对象。
这是我的代码:
try{
JSONArray data = innerJson.getJSONArray("data");
Log.d("innerDataLength", String.valueOf(data.length()));
for (int i = 0; i<data.length(); i++) {
String message = data.getJSONObject(i).getString("message");
Log.d("message", message);
}
} catch (JSONException e) {
Log.d("exception", e.getMessage());
}
这是输出:
D/innerDataLength: 25
D/message: "blah blah blah"
D/exception: No value for message
如您所见,condition
即 data.length()
是 25 那么为什么我只打印一次消息?
请注意,您遇到了一个例外:
D/exception: No value for message
表示JSONArray
中的第二个对象没有message
属性。看起来是可选的,所以你需要先检查 message
属性 是否存在。
更新:
try{
JSONArray data = innerJson.getJSONArray("data");
Log.d("innerDataLength", String.valueOf(data.length()));
for (int i = 0; i < data.length(); i++) {
JSONObject obj = data.getJSONObject(i);
if (obj.has("message")) {
String message = obj.getString("message");
Log.d("message", message);
}
if (obj.has("story")) {
String story= obj.getString("story");
Log.d("story", story);
}
}
} catch (JSONException e) {
Log.d("exception", e.getMessage());
}
innerJson.getJSONArray("data") 数组中的某些对象没有消息
检查我说的注释循环内的行并打印我将得到 0 到 24
避免用try和catch包围解析message的语句,避免解析不包含message的对象
你也可以打印data.getJSONObject(i).toString 来查看解析对象