我正在创建一个Android应用程序。我有多个字符串,其中一个是
[
{
"name": "lofer",
"fbname": "\u200b \u179c",
"link": "http:\/\/example.com:9874\/et\/oyp.pls",
"0": null
},
{
"name": "oxypo",
"fbname": "\u200b \u179c\u17b7",
"link": "http:\/\/example.com:9874\/et\/pou.pls",
"0": null
}
]
这存储在String result
现在我想从这个字符串中提取名称和相应的链接,如
Name1= lofer
Link1= http://example.com:9874/et/oyp.pls
Name2= oxypo
Link2= http://example.com:9874/et/pou.pls
首先我删除了所有的双引号,然后从头开始删除“ [”,从结尾删除“] ”,然后我将其拆分为“ } “然后我删除” {“,然后按”,“拆分,然后找到名称和链接。
我已经编写了一个代码并且它的工作非常好,我得到了我想要的但我想优化它。这是我的代码和我正在做的事情
result=result.replace("\"","");
result=result.substring(1,result.length()-1);
String [] split=result.split("\\}");
for(int i=0;i<split.length;i++)
{
split[i]=split[i].substring(1);
String [] spl=split[i].split(",");
Data d = new Data();
for(int j=0;j<spl.length;j++)
{
if(spl[j].substring(0,4).equals("name"))
{
d.name=spl[j].substring(5);
}
else if(spl[j].substring(0,4).equals("link"))
{
d.link=spl[j].substring(5);
d.link=d.link.replace("\\", "");
}
}
output.add(d);
Log.i("name",d.name);
Log.i("link",d.link);
}
我不擅长正则表达式,也许我们可以通过正则表达式实现所有这些,或者除了 OPTIMIZATION 之外的任何事情都是我的主要关注,而不是多次替换。非常感谢您的帮助。
由于
答案 0 :(得分:4)
那是JSON。
Android附带基本JSON parsing classes,还有其他可用的库(例如Gson,Jackson)提供更多功能集。
使用Android提供的类的最基本的解决方案是:
// Your JSON represents an array of objects
JSONArray jsonArray= new JSONArray(yourString);
// Now you have the array, iterate and get the objects
for (int i = 0; i < jsonArray.length(); i++)
{
JSONObject obj = jsonArray.getJSONObject(i);
System.out.println("Name" + i + "= " + obj.getString("name"));
System.out.println("Link" + i + "= " + obj.getString("link"));
}
答案 1 :(得分:0)
看起来像JSON有效的方法是使用JSON parser
GSON