【发布时间】:2017-08-13 09:09:39
【问题描述】:
我有一个 php 文件,它从特定列中获取所有行。然后将结果放入一个数组中,然后进行 json_encoded。当我 Toast php 文件的输出时,它会显示一个具有正确值的 JSON 字符串。我需要将其转换为 Java 字符串数组,以便通过单击按钮一一进行迭代。
我在这里尝试了多种解决方案,但无济于事,因此我们将不胜感激!
getImage.php
$sql = "SELECT advert_File_Path FROM Ads";
$result = $mysql_con->query($sql) or die('Query problem: '.mysqli_error($mysql_con));
//create array
$resultarray = array();
while($row = mysqli_fetch_assoc($result)){
$resultarray[] = $row;
}
echo json_encode($resultarray);
MainActivity.java(仅相关代码)
private void loadNextAdvert()
{
Toast.makeText(this, "Please wait, image may take a few seconds to load...", Toast.LENGTH_LONG).show();
dbhelper = (DbHelper) new DbHelper(new DbHelper.AsyncResponse() {
@Override
public void processFinish(String output) {
if(output.equalsIgnoreCase("exception") || output.equalsIgnoreCase("unsuccessful")){
Toast.makeText(MainActivity.this, "Connection error", Toast.LENGTH_SHORT).show();
}else{
//initializes ArrayList
stringList = new ArrayList<>();
try {
//initializes JSONArray with output from php getImage file
jsonArray = new JSONArray(output);
if(jsonArray != null){
int len = jsonArray.length();
for(int i=0; i<len; i++){
stringList.add(jsonArray.get(i).toString());
}
}
} catch (JSONException e) {
e.printStackTrace();
}
Toast.makeText(MainActivity.this, String.valueOf(stringList), Toast.LENGTH_LONG).show();
}
}
}).execute(loadPic);
}
应该显示 ArrayList 内容的 Toast 只是显示为 '[]'。
【问题讨论】:
-
output字符串的格式是什么?或者更好的是,显示output字符串。 -
嗨,Lym,输出看起来像这样 [{"advert_File_Path":"toothpaste.jpg"},{"advert_File_Path":"moisturizer.jpg"},{"advert_File_Path":"shampoo.jpg "},{"advert_File_Path":"hobnobs.png"},{"advert_File_Path":"shrek.jpg"}]数组
-
试试
stringList.add(jsonArray.getJSONObject(i).optString("advert_File_Path")); -
最后一个
array<!-- -->也是output字符串的一部分吗?并且,请登录以查看您的jsonArray的长度。 -
我设法删除了数组,似乎是注释代码以某种方式突破了。我记录了数组的长度,但没有出现 System.out
标签: java php android arrays json