我从服务器获取到了这个内容
"[\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"]"
上面的文本不是数组,而是从服务器返回的字符串。
我希望将其转换为ArrayList。
有没有办法进行转换?
我从服务器获取到了这个内容
"[\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"]"
上面的文本不是数组,而是从服务器返回的字符串。
我希望将其转换为ArrayList。
有没有办法进行转换?
List<String> myList = new ArrayList<String>(Arrays.asList(s.split(",")));
手动解析该字符串并没有好的方法。您应该使用一个库来为您解析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);
}
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());
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);
这将会有效
String text = [\"abc\",\"def\",\"ghi\",\"jkl\",\"mno\",\"pqr\",\"stu\",\"vwx\",\"yz\"]";
text = text.replaceAll("[\\[\\](){}\"]", "");
List<String> list = Arrays.asList(text.split(","));
这是将JSON字符串解析为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) {
}
}
Sanjay在他的回答中指出了正确的问题,即它不是正确的格式。
但如果您正在使用Gson库来解析JSON数据,则以下方法也可以处理此格式。因此,您无需做任何事情:)
new Gson().fromJson(your_server_response, Model.class);
还有一种方法是使用Java的内置方法
public String replaceAll (String regularExpression, String replacement)