我有一个应用程序,我以array&的形式从服务器(json)获取数据使用我在我的应用程序中使用的索引,如下所示。
JSONObject topobj = new JSONObject(page);
JSONObject innerobj = topobj.getJSONObject("restarutant");
JSONArray phone = innerobj.getJSONArray("phone");
textViewPhone.setText("Phone: " + phone.get(0).toString() + " ,"
+ phone.get(1).toString());
对于小尺寸阵列,我可以这样做。但是当数组包含'n'没有元素并动态地我必须使用它时,那时它需要转换为String Array。 谁能告诉我如何将json数组转换为String数组? 谢谢
答案 0 :(得分:22)
This可以帮到你。
编辑:
也许这就是你所需要的:
ArrayList<String> stringArray = new ArrayList<String>();
JSONArray jsonArray = new JSONArray();
for(int i = 0, count = jsonArray.length(); i< count; i++)
{
try {
JSONObject jsonObject = jsonArray.getJSONObject(i);
stringArray.add(jsonObject.toString());
}
catch (JSONException e) {
e.printStackTrace();
}
}
答案 1 :(得分:5)
我认为这就是你要搜索的内容
ArrayList<String> list = new ArrayList<String>();
JSONArray jsonArray = (JSONArray)jsonObject;
if (jsonArray != null) {
for (int i=0;i<jsonArray.length();i++){
list.add(jsonArray.get(i).toString());
}
答案 2 :(得分:5)
假设您已经拥有JSONArray jsonArray:
String[] stringArray = new stringArray[jsonArray.length];
for(int i = 0, count = jsonArray.length(); i< count; i++)
{
try {
String jsonString = jsonArray.getString(i);
stringArray[i] = jsonString.toString();
}
catch (JSONException e) {
e.printStackTrace();
}
}
答案 3 :(得分:2)
我昨天刚做过这个!如果您愿意使用第三方库,那么您可以使用Google GSON,还可以获得更简洁的代码。
String json = jsonArray.toString();
Type collectionType = new TypeToken<Collection<String>>(){}.getType();
Collection<String> strings = gson.fromJson(json, collectionType);
for (String element : strings)
{
Log.d("TAG", "I'm doing stuff with: " + element);
}
您可以在user guide中找到更多示例。
答案 4 :(得分:0)
另一种优雅的科特林方式:
val list = jsonArray.map { jsonElement -> jsonElement.toString() }
然后根据需要转换为数组