[英]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.