【发布时间】:2011-08-05 17:01:50
【问题描述】:
我从 php.ini 传回一个 JSON 对象(由字符串数组组成)。我正在尝试将对象转换为 Java jArray,但从我的 php 文件返回的字符串格式不正确:
来自 php 的字符串(我的数据库提示表中有 2 个条目)
[{"0":"2","id":"2","1":"2","household_id":"2","2":"3","stepgreen_id":"3","3":"tip 1","tip":"tip 1","4":"2011-08-05","dateOfTip":"2011-08-05","5":"3","likes":"3"}]
[{"0":"2","id":"2","1":"2","household_id":"2","2":"3","stepgreen_id":"3","3":"tip 1","tip":"tip 1","4":"2011-08-05","dateOfTip":"2011-08-05","5":"3","likes":"3"},{"0":"91","id":"91","1":"1","household_id":"1","2":"1","stepgreen_id":"1","3":"tip 2","tip":"tip 2","4":"2011-08-04","dateOfTip":"2011-08-04","5":"1","likes":"1"}]
这是我的 php 代码
<?php
// mysql connection, etc....
$query = "SELECT * FROM Tips";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
$output[]=$row;
print(json_encode($output));
}
mysql_close($con);
?>
在 Java 中,我执行以下操作。发生的事情是我得到了一个只有一个条目的 jArray。我期望 2。我不确定为什么 php json 对象返回一个包含 1 个字符串的数组和第二个包含 2 个字符串的数组。我只希望收到一个包含 2 个字符串的数组。
try {
InputStream responseData;
responseData = httpEntity.getContent();
js = convertStreamToString(responseData);
Log.v(LOG_TAG, js);
jArray = new JSONArray(js);
JSONObject json_data = null;
Log.v(LOG_TAG, "Arraysize: " + jArray.length());
for (int i = 0; i < jArray.length(); i++) {
Log.v(LOG_TAG, "entering loop");
json_data = jArray.getJSONObject(i);
tip = json_data.getString("tip");
stepgreenId = json_data.getString("stepgreen_id");
dateOfTip = json_data.getString("dateOfTip");
householdId = json_data.getString("household_id");
likes = json_data.getString("likes");
Log.v(LOG_TAG, "Json tip= " + tip + " stepgreen id: " + stepgreenId + " household_id: " + householdId + " likes: " + likes);
}
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
【问题讨论】:
-
运行时的js是什么?