android如何将json数组转换为字符串数组

时间:2011-06-15 10:20:14

标签: android json

我有一个应用程序,我以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数组? 谢谢

5 个答案:

答案 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() }

然后根据需要转换为数组