【发布时间】:2013-02-05 02:41:05
【问题描述】:
我在 PHP 中的 JSON 输出是这样完成的:
print json_encode(array('rate' => $topcat, 'hometown' => $hometown, 'talk' => $talk));
我的 JSON 输出在我的浏览器中如下所示:
{"rate":"Movies","hometown":"Seattle, WA","talk":"Movies"}
在 Java/Android 中我这样做:
protected void onPostExecute(Void v) {
try {
JSONArray jArray = new JSONArray(result);
JSONObject json_data = null;
for (int i = 0; i < jArray.length(); i++) {
json_data = jArray.getJSONObject(i);
Hometown = json_data.getString("hometown");
FavCategory = json_data.getString("rate");
Talk = json_data.getString("talk");
}
} catch (JSONException e1) {
} catch (ParseException e1) {
e1.printStackTrace();
}
if (Hometown.equals("")) {
Hometown = "Not Specified";
}
tvHometown.setText(Hometown);
tvRate.setText(FavCategory);
tvTalk.setText(Talk);
Log.d("Log: ", Hometown + " " + FavCategory + " " + Talk);
}
}
在那个日志上,我得到了这个:Seattle, WA, null, null
谁能明白为什么?
编辑:新的 Java 代码,仍然出现错误:
String homeTown = "", favCategory = "", favTalk = "";
try {
JSONObject jsonData = new JSONObject(result);
homeTown = jsonData.getString("hometown");
favCategory = jsonData.getString("rate");
favTalk = jsonData.getString("talk");
tvHometown.setText(homeTown);
tvRate.setText(favCategory);
tvTalk.setText(favTalk);
} catch (JSONException e1) {
} catch (ParseException e1) {
e1.printStackTrace();
}
我遇到了一个异常:
02-05 08:51:48.078: E/log_tag(22958): Error in http connection org.json.JSONException: Value null of type org.json.JSONObject$1 cannot be converted to JSONArray
【问题讨论】:
-
使用新代码,你得到的是
null,还是代码抛出了异常?具体是哪一行? -
@MattBall 好的,也许 null 是错误的。如上所示,我收到了 JSONException(刚刚添加)。
-
我在您的代码中没有看到任何关于
JSONArray的内容。您确定您的应用运行的代码实际上就是问题所在吗? -
我想我刚刚在 PHP 方面抓到了一些东西......会在几分钟内告诉你......
-
@MattBall 知道了!当我编码时,它以某种方式从 PHP 端的
print更改为echo... 标记你是正确的!