【问题标题】:how to convert JSONString to Javascript Object如何将 JSONString 转换为 Javascript 对象
【发布时间】:2012-03-28 09:02:00
【问题描述】:

我需要一些关于 JavaScript 的帮助。我在单击按钮时执行 ajax 调用,它返回以下字符串,这是使用 GSON 生成的(基本上它是一个 JSON 对象)。

{ 
  "chart":{
      "renderTo":"container",
      "type":"bar"
   },
   "title":{
      "text":"Engagement Per Vendor Per GBP"
   },
   "subtitle":{
      "text":"ASPT"
   },
   "xAxis":{
      "categories":[
         "A",
         "B",
         "C",
         "D"
      ],
      "title":{
         "text":"Engagement Per Vendor Per GBP"
      }
   },
   "yAxis":{
      "min":0,
      "title":{
         "text":"Count",
         "align":"high"
      }
   },
   "plotOptions":{
      "bar":{
         "dataLabels":{
            "enabled":true
         }
      }
   },
   "legend":{
      "layout":"vertical",
      "align":"right",
      "verticalAlign":"bottom",
      "x":-100,
      "y":100,
      "floating":true,
      "borderWidth":1,
      "backgroundColor":"#FFFFFF",
      "shadow":true
   },
   "credits":{
      "enabled":true
   },
   "series":[
      {
         "name":"ABC",
         "data":[
            10,
            20,
            20,
            30
         ]
      },
      {
         "name":"DEF",
         "data":[
            10,
            20,
            30,
            40
         ]
      },
      {
         "name":"GHIJ",
         "data":[
            20,
            30,
            40,
            10
         ]
      },
      {
         "name":"KLMN",
         "data":[
            10,
            40,
            20,
            30
         ]
      }
   ]
}

当我在我的 javascript 中获取这些数据时。 我正在尝试使用以下语句将对象转换为 JSON

var jsonObj = eval(xmlHttp.responseText);

xmlHttp.responseText 具有以下字符串

{"chart":{"renderTo":"container","type":"bar"},"title":{"text":"Engagement Per Vendor Per GBP"},"subtitle":{"text":"ASPT"},"xAxis":{"categories":["A","B","C","D"],"title":{"text":"Engagement Per Vendor Per GBP"}},"yAxis":{"min":0,"title":{"text":"Count","align":"high"}},"plotOptions":{"bar":{"dataLabels":{"enabled":true}}},"legend":{"layout":"vertical","align":"right","verticalAlign":"bottom","x":-100,"y":100,"floating":true,"borderWidth":1,"backgroundColor":"#FFFFFF","shadow":true},"credits":{"enabled":true},"series":[{"name":"ABC","data":[10,20,20,30]},{"name":"DEF","data":[10,20,30,40]},{"name":"GHIJ","data":[20,30,40,10]},{"name":"KLMN","data":[10,40,20,30]}]}

当我尝试运行 jsp 时,它停在 var jsonObj = eval(xmlHttp.responseText);

我之前做过很多次,但这次数据不同。 JSON 字符串是由 GSON api 中的 JSON 方法创建的。

除非我把它放到一个 JSON 对象中,否则我将无法用它做任何事情。对此有任何帮助。

问候, 森尼

【问题讨论】:

    标签: javascript json object


    【解决方案1】:

    jQuery 可以做到:

    http://api.jquery.com/jQuery.parseJSON/

    如果你不想使用eval,这里有一个独立的解析器:https://github.com/douglascrockford/JSON-js

    更新只需使用内置的JSON object

    【讨论】:

      【解决方案2】:

      这是一种有效的 JSON 格式,因此请尽可能使用 JSON.parse(xmlHttp.responseText)(IE8+、Firefox、Chrome、Opera、Safari...),并在 IE6-7 中使用 eval('(' + xmlHttp.responseText + ')'),注意您应该添加额外的一对使用eval时的括号():

      if (JSON) return JSON.parse(xmlHttp.responseText);
      else return eval('(' + xmlHttp.responseText + ')');
      

      【讨论】:

      • +1 表示 JSON.parse 的建议(我希望我可以同时 -1,而不做 +0,因为 不建议 使用库来修补/shim-in JSON.parse 在旧浏览器上)
      • JSON 解析器将只识别 JSON 文本,拒绝所有脚本。在提供原生 JSON 支持的浏览器中,JSON 解析器也比 eval 快得多。
      猜你喜欢
      • 2018-04-01
      • 2023-03-24
      • 2013-05-18
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2011-07-11
      • 1970-01-01
      相关资源
      最近更新 更多