我有一个php文件,它从特定列中提取所有行。然后将结果放入数组中,然后进行json_encoded。当我为PHP文件输出时,它会显示一个正确值的JSON字符串。我需要将它转换为一个Java String数组,以便我可以通过单击一个按钮来逐个遍历它。
我已经在这里尝试过多种解决方案,但无济于事,所以任何帮助将不胜感激!
如何将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 {
//initializws 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内容的吐司只是显示为 '[]' 。
'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”}] array – Gus
尝试'stringList.add(jsonArray.getJSONObject(i).optString(“advert_File_Path”));' –