我目前正在接收一个JSON对象从我的应用程序的服务器端,结果是这样
{"tags":"[{value: 2,label: 'dubstep'},{value: 3,label: 'BoysIIMen'},{value: 4,label:'Sylenth1'}]"}
但是我不需要结果中的“标签”和双引号.
所以我想要的是该JSON对象的数组表示
因此,我将如何转换它
{"tags":"[{value: 2,label: 'dubstep'},{value: 3,label: 'BoysIIMen'},{value: 4,label:'Sylenth1'}]"}
对此
[{value: 2,label: 'dubstep'},{value: 3,label: 'BoysIIMen'},{value: 4,label:'Sylenth1'}]
这是创建数组的循环
String k = "[";
List<Tag> tg = audioTaggingService.findTagsByName(q);
for(int i = 0; i<audioTaggingService.findTagsByName(q).size();i++){
Tag t = tg.get(i);
if(i == (tg.size() - 1)){
k+="{value: "+t.getId()+",label:'"+t.getName()+"'}";
}else{
k+="{value: "+t.getId()+",label:'"+t.getName()+"'}";
}
}
k+="]";
上面代码的结果就是这个
[{value: 2,label: 'dubstep'},{value: 3,label: 'BoysIIMen'},{value: 4,label:'Sylenth1'}]
解决方法:
假设您在一个名为response的javascript对象中获得了服务器端响应,您可以使用$.parseJSON函数解析标记字符串属性.但首先,您需要修复服务器端代码,以便为tags属性返回有效的JSON字符串(在JSON属性名称中必须用引号括起来):
// This came from the server
var response = {"tags":"[{\"value\": 2,\"label\": \"dubstep\"},{\"value\": 3,\"label\": \"BoysIIMen\"},{\"value\": 4,\"label\":\"Sylenth1\"}]"};
// Now you Could parse the tags string property into a corresponding
// javascript array:
var tags = $.parseJSON(response.tags);
// and at this stage the tags object will contain the desired array
// and you Could access individual elements from it:
alert(tags[0].label);
如果由于某种原因您无法修改服务器端脚本以在tags属性中提供有效的JSON,您仍然可以使用eval而不是$.parseJSON:
var tags = eval(response.tags);
这不是推荐的方法,通常你应该避免使用eval,因为它会执行任意的javascript.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。