如何将JSON数组转换为Java String数组

时间:2017-03-21 15:33:28

标签: java php android arrays json

我有一个php文件,它从特定列中获取所有行。然后将结果放入数组中,然后进入json_encoded。当我向php文件中输出Toast时,它会显示一个具有正确值的JSON字符串。我需要将其转换为Java String数组,以便我可以通过点击按钮逐个遍历它 我在这里尝试了多种解决方案,但无济于事,所以任何帮助都将不胜感激!

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只显示为&#39; []&#39;。

4 个答案:

答案 0 :(得分:1)

管理自己解决它。
所以这里,

步骤1.我必须从我的php文件中删除注释代码,因为它突然以某种方式突破,这是来自JSON数组末尾的那些。

步骤2.我不得不从我用于错误检查的php文件中删除一个额外的echo。我想我说你想要的唯一回音就是json_encode。

步骤3.检查Java中JSONarray的长度,它记录了5,所以我现在知道它正确读取了。

第4步。添加了Pavneet_Singh的代码段,将stringList.add(jsonArray.get(i).toString()); 替换为stringList.add(jsonArray.getJSONObject(i).optString("advert_File_Path"));

步骤5.使用此代码stringArray = new String[stringList.size()]; stringArray = stringList.toArray(stringArray);将StringList从ArrayList转换为String数组 快乐的时光!我花了很长时间试图解决这个问题哈哈,前两个步骤是相当愚蠢的,但它有时是生活中最难找到的最明显的事情。希望这也可以帮助其他人!

答案 1 :(得分:0)

使用stringList.add(jsonArray.getString(i));

答案 2 :(得分:0)

试试这个:

JSONArray arr = new JSONArray(putNesessaryValueHere);
List<String> list = new ArrayList<String>();
for(int i = 0; i < arr.length(); i++){
    list.add(arr.getJSONObject(i).getString("name"));
}

答案 3 :(得分:0)

Try this : 

ArrayList<String> arrayList = new ArrayList<String>();
JSONArray jsonArray = new JSONArray();
for(int i = 0, count = jsonArray.length(); i< count; i++)
{
    try {
        JSONObject jsonObject = jsonArray.getJSONObject(i);
        arrayList.add(jsonObject.toString());
    }
    catch (JSONException e) {
        e.printStackTrace();
    }
}