繁体   English   中英

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

[英]How to convert JSON array to Java String array

我有一个php文件,可从特定列获取所有行。 然后将结果放入数组,然后进行json_encoded。 当我敬酒php文件的输出时,它将显示具有正确值的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仅显示为[[]”。

设法自己解决。
所以这里

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

第2步。我必须从用于错误检查的php文件中删除其他回显。 我想说的很对,您想要的唯一回声就是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.使用以下代码将stringList从ArrayList转换为String数组stringArray = new String[stringList.size()]; stringArray = stringList.toArray(stringArray); stringArray = new String[stringList.size()]; stringArray = stringList.toArray(stringArray);

快乐的时光! 我花了很长时间试图弄清楚这一点,哈哈,前两个步骤相当笨拙,但有时这是人生中最显而易见的事情,最难找到。 希望这也可以帮助其他人!

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

尝试这个:

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"));
}
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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM