我面临一个奇怪的问题。我试图将以下STRING转换为字符串数组:[https://www.facebook.com,https://www.twitter.com,https://www.google.com]
使用:
JSONArray jsonArray = new JSONArray(vendorDetail.getSocialNetwork());
String[] strArr = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
strArr[i] = jsonArray.getString(i);
}
if(strArr.length >= 1){
fbLink= strArr[0];
}
if(strArr.length >= 2){
twitterLink = strArr[1];
}
if(strArr.length >= 3){
googleLink = strArr[2];
}
并收到以下错误:org.json.JSONException:[https://www.facebook.com,https://www.twitter.com,https://www.google.com]字符7处的无终止数组
注意:我正在从服务器端响应中获取字符串。应该将其转换为String数组
答案 0 :(得分:0)
str.split()
可以将str更改为StringArray。以下是演示
public void test(){
String str = "[https://www.facebook.com,https://www.twitter.com,https://www.google.com]";
str2Array(str);
}
private String[] str2Array(String str){
if (str != null && str.length()>=2){
str = str.substring(1,str.length()-1);
String[] strArr = str.split(",");
return strArr;
}
return null;
}
答案 1 :(得分:0)
您可以使用字符串类的split()
方法获得结果。
尝试一下:
String s = "[https://www.facebook.com,https://www.twitter.com,https://www.google.com]";
s = s.replaceAll("\\[", "").replaceAll("\\]", "");
Log.e("My Replaced String", s);
String[] split = s.split(",");
for (String s1 : split) {
Log.e("My Split String", s1);
}
答案 2 :(得分:0)
正如您提到的那样,您将收到以下错误:org.json.JSONException:字符
处的终止数组因为您拥有数组
[https://www.facebook.com,https://www.twitter.com,https://www.google.com]
这是不正确的,正确的JSONArray是
["https://www.facebook.com","https://www.twitter.com","https://www.google.com"]
如果您有以下来自json ["https://www.facebook.com","https://www.twitter.com","https://www.google.com"]
的数组,并且需要在String中使用它,则可以按照
try {
String data= your JSONArray;
JSONArray jsonArray=new JSONArray(data);
for(int i=0;i<jsonArray.length();i++)
{
switch (i)
{
case 0:
String facebook=jsonArray.getString(i);
break;
case 1:
String twitter=jsonArray.getString(i);
break;
case 2:
String google=jsonArray.getString(i);
break;
}
}
} catch (JSONException e) {
e.printStackTrace();
}
要验证任何JSON,您可以在此网站http://json.parser.online.fr/
答案 3 :(得分:0)
如果您的回复是
案例 1
<块引用>"[https://www.facebook.com,https://www.twitter.com,https://www.google.com]"
然后尝试简单的一行代码将其转换为字符串数组
var str = "[https://www.facebook.com,https://www.twitter.com,https://www.google.com]";
str.replace(/^\[/,"").replace(/]$/,"").split(",");
输出将是
["https://www.facebook.com"、"https://www.twitter.com"、"https://www.google.com"]
案例 2
如果您的回复是
<块引用>'["https://www.facebook.com", "https://www.twitter.com", "https://www.google.com"]'
那么您的代码将绝对有效。