JSON字符串到JS对象如何实现?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (81)

我正在使用JS对象来创建Google可视化图。我正在设计数据源。起初,我创建了一个JS对象客户端。

var JSONObject = {
    cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
        {id: 'soldpens', label: 'Sold Pens', type: 'number'}],
    rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
        {c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
     {c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}]  
};

var data = new google.visualization.DataTable(JSONObject, 0.5);

现在我需要动态获取数据。所以我发送一个AJAX请求到一个返回JSON字符串的页面:

 "cols: [{id: 'date', label: 'Date', type: 'date'},
{id: 'soldpencils', label: 'Sold Pencils', type: 'number'},
{id: 'soldpens', label: 'Sold Pens', type: 'number'}],
  rows: [{c:[{v: new Date(2008,1,1),f:'2/1/2008'},{v: 30000}, {v: 40645}]},
      {c:[{v: new Date(2008,1,2),f:'2/2/2008'},{v: 14045}, {v: 20374}]},
{c:[{v: new Date(2008,1,3),f:'2/3/2008'},{v: 55022}, {v: 50766}]}"

这我保存到一个变量:

var var1 = "cols: [{i ....... 66}]}"

并显示为

alert(var1);

现在我的任务是从这个字符串创建一个JS对象。这不起作用。当我使用JS对象时,一切正常,我能够获得我所需的图形。现在,如果我尝试将从警报消息确认的AJAX请求中的字符串值放入对象中,则该对象不会正确创建。请让我知道您的意见和任何更正或建议。

提问于
用户回答回答于

一些现代浏览器支持将JSON解析为本地对象:

var var1 = '{"cols": [{"i" ....... 66}]}';
var result = JSON.parse(var1);

对于不支持它的浏览器,可以从json.org下载json2.js以安全解析JSON对象。该脚本将检查本机JSON支持,如果它不存在,请改为提供JSON全局对象。如果速度更快的本机对象可用,它将会退出脚本并保持原样。但是,必须提供有效的JSON,否则会引发错误 - 可以使用http://jslint.comhttp://jsonlint.com检查JSON的有效性。

用户回答回答于

如果信任字符串中的数据,则可以使用eval(jsonString),否则需要正确解析它 - 请查看json.org以获取一些代码示例。

扫码关注云+社区

领取腾讯云代金券