我有一個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」));' –