如何在Android中将Stringified数组转换为ArrayList

时间:2017-01-12 07:48:54

标签: java android

我从服务器

获取此信息
"[\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"]"

上述文本不是数组,而是从服务器返回的字符串。

我想在ArrayList

中转换它

有没有办法转换它?

7 个答案:

答案 0 :(得分:2)

可以使用separator来完成,其中s是String:

List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));

答案 1 :(得分:2)

手动解析该字符串并不是一个好主意。您应该使用一个为您解析JSON字符串的库。无论如何,给定的字符串不是有效的JSON字符串,就像其他人提到的那样,你应该从服务器请求JSON格式的数据。

如果您的服务器只返回这样,并且您需要手动解析,那么这将是一个解决方案。不是一个很好的,但它做的工作。

public static void main(String[] args) {
    List<String> words = new ArrayList<>();
    String string = "[\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"]";

    String withoutBrackets = string.replaceAll("[\\[\\](){}]", ""); // Remove all the brackets
    for (String word : withoutBrackets.split(",")) {
        String singleWord = word.replaceAll("\"", "");
        words.add(singleWord);
    }

    System.out.println(words);
}

答案 2 :(得分:1)

使用

修改字符串
     str = str.replace ("[", "").replace ("]", "");

所以它与

相同
    String str = "\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"";

然后使用

    List<String> al = new ArrayList<String>(Arrays.asList(str.split(",")));

    System.out.println(al);

答案 3 :(得分:1)

这将有效

String text = [\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"]";
text = text.replaceAll("[\\[\\](){}\"]", "");
List<String> list = Arrays.asList(text.split(","));

答案 4 :(得分:0)

这是将JSON String解析为ArrayList的正确方法:)

 ArrayList<String> list = new ArrayList<String>();
         String newArrayy ="[\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"]";
                  imagePath = newArrayy;
                            try {
                                JSONArray jsonArray = new JSONArray(imagePath);
                                if (null != jsonArray) {
                                    Logger.LogError("imagePathhh", jsonArray.toString() + "" + jsonArray.length());
 for (int i = 0; i < jsonArray.length(); i++) {           
    String value =(String) jsonArray.getString(i);
       list.add(value);                        dataBaseCurdOperation.insertPaymentPath(jsonArray.getString(i));
                                    }
                                } else {

                                }
                            } catch (Exception e) {

                            }
                        }

答案 5 :(得分:-1)

Sanjay在他的回答中指出它是正确的,它格式不正确。

如果您使用Gson库来解析JSON数据,那么以下方法也会处理这种格式。所以你没有必要做任何事情:)

new Gson().fromJson(your_server_response, Model.class);

另一种方法是使用java的内置方法

public String replaceAll (String regularExpression, String replacement)

答案 6 :(得分:-1)

尝试使用Gson。将其添加到您的gradle中

compile 'com.google.code.gson:gson:2.2.4'

希望这有帮助 -

String str = "[\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"]";
Gson gson=new Gson();
ArrayList<String> strings = gson.fromJson(str,new TypeToken<ArrayList<String>>(){}.getType());