我有div内容,div包含像javascript对象这样的文本。
<div class="data-content">{ title: "Yes", value : 4247, color: "#FC4349", total_votes: "10968", percentage: "39%"}, { title: "No", value : 6721, color: "#2980b9", total_votes: "10968", percentage: "61%"}</div>
<script> var data = $('.data-content').text();</script>
当前数据值是一个字符串,我希望它作为对象而不是字符串。 是否有可能或任何其他方式将div内容作为javascript对象?
感谢任何帮助。
答案 0 :(得分:1)
试试:
var data = $('.data-content').text();
var output = JSON.parse('[' + data.replace(/\b([a-z_]+)\b/g, '"$1"') + ']');
这里发生了什么?有效的JSON格式要求使用撇号包装键,因此我们使用/\b([a-z_]+)\b/g
正则表达式包装它们。
之后我们只得到用逗号分隔的对象,所以我们必须用[]
包装它来创建一个数组。从现在起它对JSON解析器有效,我们得到了预期的结果。
答案 1 :(得分:-1)
使用JSON.parse()
,如下所示:
var transformed = JSON.parse(data);
链接文档提供了有关如果JSON文本无效时如何添加错误处理的详细信息。您还可以使用jQuery.parseJSON()
获得更好的浏览器支持,如下所示:
var transformed = jQuery.parseJSON(data);
好的,因此您的JSON也无效,请参阅JSON object以获取有效JSON对象的文档。我已将其修复并创建了JSFiddle以显示正确的代码。