JSONstring到JS对象

我正在使用JS对象来创buildGoogle可视化graphics。 我正在devise数据源。 起初,我创build了一个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); 

现在我需要dynamic获取数据。 所以我发送一个AJAX请求到一个返回JSONstring的页面:

  "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}]}" 

这我保存到一个variables:

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

并显示为

 alert(var1); 

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

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

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

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

如果你信任string中的数据,你可以使用eval(jsonString),否则你需要正确parsing – 检查json.org的代码示例。

你问题中的string不是有效的jsonstring。 来自json.org网站 :

JSONbuild立在两个结构上:

 * A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array. * An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence. 

基本上一个JSONstring将始终以{或[。

然后@Andy E和@Cryo说你可以用json2.js或其他一些库来parsingstring。

恕我直言,你应该避免eval,因为它会任何JavaScript程序,所以你可能会招致安全问题。

您可以从JSON.org使用此库将您的string转换为JSON对象。

 var var1_obj = JSON.parse(var1); 

或者你也可以使用jquery-json库。

 var var1_obj = $.toJSON(var1); 

您要返回的string不是有效的JSON。 对象中的名字需要引用,整个string需要放在{ … }以形成一个对象。 JSON也不能包含像new Date() 。 JSON只是JavaScript的一小部分,它只有string,数字,对象,数组, truefalsenull

有关更多信息,请参阅JSON语法 。