Android 无法从JsonArray获取字符串
我在数组中得到2、3和4个字符串(值),但我无法在textview中设置值。我在textview中只得到了4个值,这也是相同的重复。请在下面告诉我如何处理this.JSON:Android 无法从JsonArray获取字符串,android,json,arraylist,Android,Json,Arraylist,我在数组中得到2、3和4个字符串(值),但我无法在textview中设置值。我在textview中只得到了4个值,这也是相同的重复。请在下面告诉我如何处理this.JSON: { results: [ { types: [ "sublocality_level_3", "sublocality", "political" ] }, { types: [ "point_of_interest",
{
results: [
{
types: [
"sublocality_level_3",
"sublocality",
"political"
]
},
{
types: [
"point_of_interest",
"establishment"
]
},
{
types: [
"travel_agency",
"point_of_interest",
"establishment"
]
},
{
types: [
"point_of_interest",
"establishment"
]
},
{
types: [
"store",
"point_of_interest",
"establishment"
]
},
{
types: [
"dentist",
"health",
"point_of_interest",
"establishment"
]
},
{
types: [
"clothing_store",
"store",
"point_of_interest",
"establishment"
]
},
{
types: [
"point_of_interest",
"establishment"
]
},
]
}
编码我正在尝试的内容:
try {
object = new JSONObject(url);
JSONArray array = object.getJSONArray("results");
for (int i = 0; i < array.length(); i++){
JSONObject object1 = array.getJSONObject(i);
JSONArray array1 = object1.getJSONArray("types");
for(int j = 0; j < array1.length(); j++){
if (array1.length()==2) {
t1 = array1.getString(0);
t2 = array1.getString(1);
} if (array1.length()==3) {
t1 = array1.getString(0);
t2 = array1.getString(1);
t3 = array1.getString(2);
} if (array1.length()==4) {
t1 = array1.getString(0);
t2 = array1.getString(1);
t3 = array1.getString(2);
t4 = array1.getString(3);
}
}
getterSetter.setT1(t1);
getterSetter.setT2(t2);
getterSetter.setT3(t3);
getterSetter.setT4(t4);
list.add(getterSetter);
adapter = new GooglePlacesAdapter(GooglePlace.this,list);
listView.setAdapter(adapter);
}
} catch (JSONException e) {
e.printStackTrace();
}
试试看{
对象=新的JSONObject(url);
JSONArray数组=object.getJSONArray(“结果”);
对于(int i=0;i
第一个数组应采用格式而不是语法
{
"results": [
{
"types": [
"sublocality_level_3",
"sublocality",
"political"
]
},
{
"types": [
"point_of_interest",
"establishment"
]
},
{
"types": [
"travel_agency",
"point_of_interest",
"establishment"
]
},
{
"types": [
"point_of_interest",
"establishment"
]
},
{
"types": [
"store",
"point_of_interest",
"establishment"
]
},
{
"types": [
"dentist",
"health",
"point_of_interest",
"establishment"
]
},
{
"types": [
"clothing_store",
"store",
"point_of_interest",
"establishment"
]
},
{
"types": [
"point_of_interest",
"establishment"
]
}
]
}
在代码中,您可以这样做
try {
object = new JSONObject(url);
JSONArray array = object.getJSONArray("results");
for (int i = 0; i < array.length(); i++){
JSONObject object1 = array.getJSONObject(i);
JSONArray array1 = object1.getJSONArray("types");
for(int j = 0; j < array1.length(); j++){
if (array1.length()==2) {
t1 = array1.getString(0);
t2 = array1.getString(1);
t3 = "";
t4 = "";
} else if (array1.length()==3) {
t1 = array1.getString(0);
t2 = array1.getString(1);
t3 = array1.getString(2);
t3 = "";
t4 = "";
} else if (array1.length()==4) {
t1 = array1.getString(0);
t2 = array1.getString(1);
t3 = array1.getString(2);
t4 = array1.getString(3);
}
getterSetter.setT1(t1);
getterSetter.setT2(t2);
getterSetter.setT3(t3);
getterSetter.setT4(t4);
list.add(getterSetter);
}
adapter = new GooglePlacesAdapter(GooglePlace.this,list);
listView.setAdapter(adapter);
}
} catch (JSONException e) {
e.printStackTrace();
}
试试看{
对象=新的JSONObject(url);
JSONArray数组=object.getJSONArray(“结果”);
对于(int i=0;i
希望这对您有所帮助您应该有一行与此类似的内容
GetterSetter getterSetter = new GetterSetter();
将此行移到第一个for循环内
注意:绝对不需要内部for循环(第二个)。您可以删除该循环,并将if语句保留在其中
更新:您的代码应该是
try {
object = new JSONObject(url);
JSONArray array = object.getJSONArray("results");
for (int i = 0; i < array.length(); i++){
JSONObject object1 = array.getJSONObject(i);
JSONArray array1 = object1.getJSONArray("types");
GetterSetter getterSetter = new GetterSetter(); // This line should be inside for loop
if (array1.length()==2) {
getterSetter.setT1(array1.getString(0));
getterSetter.setT2(array1.getString(1));
} else if (array1.length()==3) {
getterSetter.setT1(array1.getString(0));
getterSetter.setT2(array1.getString(1));
getterSetter.setT3(array1.getString(2));
} else if (array1.length()==4) {
getterSetter.setT1(array1.getString(0));
getterSetter.setT2(array1.getString(1));
getterSetter.setT3(array1.getString(2));
getterSetter.setT4(array1.getString(3));
}
list.add(getterSetter);
adapter = new GooglePlacesAdapter(GooglePlace.this,list);
listView.setAdapter(adapter);
}
} catch (JSONException e) {
e.printStackTrace();
}
试试看{
对象=新的JSONObject(url);
JSONArray数组=object.getJSONArray(“结果”);
对于(int i=0;i
您面临的问题是什么?我无法获取类型为2和3的字符串。请编辑您的问题。您的JSON文件无效。有2个字符串的数组没有响应意味着我没有得到值rohit!!在这方面,几乎没有领域。获取50-60个字段时如何处理。您的GetterSetter
类应该使用ArrayList
而不是单个字符串。这样,您就可以继续向该arraylist添加字符串,并在循环结束时根据需要执行操作。