如何将div内容作为对象

时间:2014-06-13 09:04:57

标签: javascript

我有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对象?

感谢任何帮助。

2 个答案:

答案 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解析器有效,我们得到了预期的结果。

http://jsfiddle.net/8ubFY/

答案 1 :(得分:-1)

使用JSON.parse(),如下所示:

var transformed = JSON.parse(data);

链接文档提供了有关如果JSON文本无效时如何添加错误处理的详细信息。您还可以使用jQuery.parseJSON()获得更好的浏览器支持,如下所示:

var transformed = jQuery.parseJSON(data);

好的,因此您的JSON也无效,请参阅JSON object以获取有效JSON对象的文档。我已将其修复并创建了JSFiddle以显示正确的代码。