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)
但这失败了.我在网上找不到与之相关的任何内容.有人可以帮我这个吗?
来自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验证器.
| 归档时间: |
|
| 查看次数: |
12196 次 |
| 最近记录: |