安卓如何将JSON数组转换为字符串数组

9

我有一个应用程序,从服务器获取数据(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'个元素并且动态使用时,需要将其转换为字符串数组。 有人能告诉我如何将JSON数组转换为字符串数组吗? 谢谢


1
如果你发现问题的答案有用,应该接受正确的答案(看那里有一个勾号),并使用点赞。这将帮助你获得更多的答案。 - Rishabh
可能是将Json数组转换为普通Java数组的重复问题。 - Suma
ArrayList不是String[],标题无法满足您对问题的解释,而且被接受的答案是针对ArrayList而不是String[]。 - Milad
6个回答

22
这里可能会对你有所帮助。

编辑:

也许这就是你需要的:

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();
    }
}

嗨,我的问题不同。它是关于将对象转换为字符串,然后将字符串转换为JSON数组。但我问的是将JSON数组转换为字符串数组。 - Jyosna
5
标题是关于String[]的,但接受的答案给出了一个ArrayList<String>,它们完全不同。 - Milad

6
假设您已经有了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();
    }
}

新的字符串数组[jsonArray.length()]; --- 应该是 ---> new String[jsonArray.length()]; - oOEric

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()); 
} 

3

我昨天刚刚做了这个!如果你愿意使用第三方库,那么你可以使用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);
}

您可以在用户指南中找到更多示例。

0

如果您正在使用org.json包,以下是将json数组转换为字符串数组的Kotlin方式。

// get json array
val jsonArray = json.getJSONArray("field")
// convert to string array
val stringArray = Array(jsonArray.length()) { jsonArray.getString(it) }

0

另一种优雅的 Kotlin 方式:

val list = jsonArray.map { jsonElement -> jsonElement.toString() }

如果需要,就将它转换为数组


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接