如何从 PHP 获取 JSON 数组到我的 java 代码?
How do I fetch a JSON array from PHP to my java code?
我的JSON回复是这样的:
["item1","item2",...]
现在,我想将每个数组项添加到我的 spinner
:
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.body() != null) {
String[] arr=response.body().split(",");
arr[0]=arr[0].replace("[","");
arr[arr.length-1]=arr[arr.length-1].replace("]","");
Arrays.sort(arr);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(view.getContext(), android.R.layout.simple_spinner_item,arr);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
if (qrtr_reg != null) {
qrtr_reg.setAdapter(adapter);
}
}
}
我所有的微调器项目都用双引号 ("") 括起来,这是我不想要的。我想要它们的对象格式。我该如何解决这个问题?
编辑: 尝试了以下代码:
ArrayList<String> arr=new ArrayList<String>();
JSONArray array = null;
try {
array = new JSONArray(response.body());
for(int i=0;i<array.length();i++){
arr.add(String.valueOf(array.getJSONObject(i).getString(0)));
}
} catch (JSONException e) {
e.printStackTrace();
}
Collections.sort(arr);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(view.getContext(), android.R.layout.simple_spinner_item,arr);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
if (qrtr_reg != null) {
qrtr_reg.setAdapter(adapter);
}
现在,我的微调器完全是空的!!
您的第二段代码几乎正确。这是错误:
arr.add(String.valueOf(array.getJSONObject(i).getString(0)))
你的数组不是JSON个对象的数组,它直接是一个字符串数组。因此,该行应该如下所示:
arr.add(array.getString(i))
(我猜你从 this answer 复制了你的尝试,但那里的问题有一个对象数组,而你的数组要简单得多。)
我的JSON回复是这样的:
["item1","item2",...]
现在,我想将每个数组项添加到我的 spinner
:
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (response.body() != null) {
String[] arr=response.body().split(",");
arr[0]=arr[0].replace("[","");
arr[arr.length-1]=arr[arr.length-1].replace("]","");
Arrays.sort(arr);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(view.getContext(), android.R.layout.simple_spinner_item,arr);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
if (qrtr_reg != null) {
qrtr_reg.setAdapter(adapter);
}
}
}
我所有的微调器项目都用双引号 ("") 括起来,这是我不想要的。我想要它们的对象格式。我该如何解决这个问题?
编辑: 尝试了以下代码:
ArrayList<String> arr=new ArrayList<String>();
JSONArray array = null;
try {
array = new JSONArray(response.body());
for(int i=0;i<array.length();i++){
arr.add(String.valueOf(array.getJSONObject(i).getString(0)));
}
} catch (JSONException e) {
e.printStackTrace();
}
Collections.sort(arr);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(view.getContext(), android.R.layout.simple_spinner_item,arr);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
if (qrtr_reg != null) {
qrtr_reg.setAdapter(adapter);
}
现在,我的微调器完全是空的!!
您的第二段代码几乎正确。这是错误:
arr.add(String.valueOf(array.getJSONObject(i).getString(0)))
你的数组不是JSON个对象的数组,它直接是一个字符串数组。因此,该行应该如下所示:
arr.add(array.getString(i))
(我猜你从 this answer 复制了你的尝试,但那里的问题有一个对象数组,而你的数组要简单得多。)