JSON字符串到JS对象

我正在使用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.com或http://jsonlint.com检查JSON的有效性。


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


你问题中的字符串不是有效的json字符串。 来自json.org网站:

JSON建立在两个结构上:

* 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.

基本上,一个json字符串总是以{或[。开头。

然后,@Andy E和@Cryo说你可以用json2.js或其他库解析字符串。

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

链接地址: http://www.djcxy.com/p/8095.html

上一篇: JSON string to JS object

下一篇: Restroing Array Children values via JSON