JSONArray 解析不使用 https 链接



我遇到了一个奇怪的问题。我正在尝试将以下字符串转换为字符串数组:[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 处的未终止数组

注意:我从服务器端响应中获取字符串。哪个应该转换为字符串数组

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

您可以使用字符串类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);
}

正如您提到的,您收到以下错误: org.json.JSONException:字符 7 处的未终止数组

因为你有的数组

[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"]的数组,并且您需要它在字符串中,那么您可以将其作为

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/

如果你的回答是

案例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"]'

那么你的代码将绝对工作。

最新更新