首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在android中将json数组转换为字符串数组?

如何在android中将json数组转换为字符串数组?
EN

Stack Overflow用户
提问于 2014-09-09 06:41:48
回答 4查看 2K关注 0票数 1

我正在将json数组转换为不存在任何标记的字符串数组。我千方百计地尝试,但没有成功。

json数组:-

validValues:“01_Abacus”、"02_AlarmClock“、"03_Basketball”、"04_Beaker“、"55_Watch”

将json数组转换为字符串值的代码

代码语言:javascript
代码运行次数:0
运行
复制
if (jsonComponentObj.has(TAG_VALID_VALUES)) {
                    String value = jsonComponentObj.getString(TAG_VALID_VALUES);
                    Logs.e("value " + value);
                    if (!value.equals("null")) {
                        JSONArray jsonArray = jsonComponentObj
                                .getJSONArray(TAG_VALID_VALUES);

                        if (jsonArray != null) {
                            ArrayList<String> stringArray = new ArrayList<String>();
                            for (int j = 0; j < jsonArray.length(); j++) {
                                try {
                                    JSONObject jsonObject = jsonArray
                                            .getJSONObject(j);
                                    stringArray.add(jsonObject.toString());
                                } catch (JSONException e) {
                                    Logs.e("Exception: "+e.toString());
                                    e.printStackTrace();
                                }
                            }
                        }
                    }

                }

异常:

代码语言:javascript
代码运行次数:0
运行
复制
org.json.JSONException: Value 01_Abacus at 0 of type java.lang.String cannot be converted to JSONObject

如果有人有主意。请回复。提前谢谢..。

EN

回答 4

Stack Overflow用户

发布于 2014-09-09 06:45:47

因为validValues JSONArray只包含字符串而不是JSONObject,所以.so从JSONArray获取所有值,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
for (int j = 0; j < jsonArray.length(); j++) {

           String str_value = jsonArray.optString(j);
           stringArray.add(str_value);

   }
票数 2
EN

Stack Overflow用户

发布于 2014-09-09 06:46:03

您的json数组包含Strings而不是json object.Therefore以直接使用getString()从json数组获取字符串,因此请更改

代码语言:javascript
代码运行次数:0
运行
复制
JSONObject jsonObject = jsonArray.getJSONObject(j);
stringArray.add(jsonObject.toString());

代码语言:javascript
代码运行次数:0
运行
复制
 stringArray.add(jsonArray.getString(j));

代码语言:javascript
代码运行次数:0
运行
复制
stringArray.add(jsonArray.optString(j));
票数 1
EN

Stack Overflow用户

发布于 2014-09-09 06:49:01

您应该使用optString(int)强制数组中的字符串值。如果数组中的值不是字符串,则使用getString(int)会导致问题。

代码语言:javascript
代码运行次数:0
运行
复制
for (int j = 0; j < jsonArray.length(); j++) {
    String value = jsonArray.optString(j);
    stringArray.add(value);     
}

如果要提供默认值,请使用optString(int, String)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25738143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档