Javascript中的JSON字符串解析

typ*_*er2 3 javascript parsing json servlets xmlhttprequest

我有一些JSON已经从servlet传递并存储在xmlhttp.responseText中.我想分解这个JSON,以便我可以拥有数据,大小,样式,名称等的值.此外,我希望将窗口小部件值放在单独的变量中.

这是JSON:

{
  "widget vlaue=2": {
    "debug": "on",
    "window": {
      "title": "Sample Konfabulator Widget",
      "name": "main_window",
      "width": 500,
      "height": 500
    },
  },
  "image": { 
    "src": "Images/Sun.png",
    "name": "sun1",
    "hOffset": 250,
    "vOffset": 250,
    "alignment": "center"
  },
  "text": {
    "data": "Click Here",
    "size": 36,
    "style": "bold",
    "name": "text1",
    "hOffset": 250,
    "vOffset": 100,
    "alignment": "center",
    "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
  }
}    
Run Code Online (Sandbox Code Playgroud)

我试过这个:

obj = JSON.parse(xmlhttp.responseText); 
Run Code Online (Sandbox Code Playgroud)

但这失败了.我在网上找不到与之相关的任何内容.有人可以帮我这个吗?

Gap*_*ton 7

来自json.org:

要将JSON文本转换为对象,可以使用eval()函数.eval()调用JavaScript编译器.由于JSON是JavaScript的正确子集,因此编译器将正确解析文本并生成对象结构.文本必须包含在parens中,以避免绊倒JavaScript语法中的歧义.

var myObject = eval('('+ myJSONtext +')');

但是仍然建议使用JSON.parse:

eval功能非常快.但是,它可以编译和执行任何JavaScript程序,因此可能存在安全问题.当源是可信的并且胜任时,指示使用eval.使用JSON解析器更安全.在基于XMLHttpRequest的Web应用程序中,只允许与提供该页面的同一源进行通信,因此它是可信的.但它可能没有能力.如果服务器的JSON编码不严格,或者它没有严格验证其所有输入,那么它可能会传送可能带有危险脚本的无效JSON文本.eval函数将执行脚本,释放其恶意.

为了防止这种情况,应该使用JSON解析器.JSON解析器将仅识别JSON文本,拒绝所有脚本.在提供本机JSON支持的浏览器中,JSON解析器也比eval快得多.预计本机JSON支持将包含在下一个ECMAScript标准中.

var myObject = JSON.parse(myJSONtext,reviver);

也许您的JSON有问题,请访问jsonlint.com获取免费的基于Web的JSON验证器.


Str*_*lok 5

您提供的JSON是无效的.第9行包含一个,不应该存在的额外内容.

这是一个没有的工作的JSFiddle ,.

http://jsfiddle.net/ApDsP/