2010-12-15 33 views
1

我真的停留在解析JSON字符串并将其取值。我得到的JSON字符串作为如何在JavaScript中解析JSON以取得价值

{"user":{"id":"1","firstname":"Freelogin","created":"0000-00-00 00:00:00","lastname":"Administrator","email":"[email protected]", "usergroup_id":"1","status":"1","ip_enable":"N","priv":"0","expire":""},"data":{ "1":{"5":{"last_update":"2010-12-13 16:16:16","status":"0"},"3":{"last_update":"2010-12-13 16:41:48","status":"1"}},"2":{"6":{"last_update":"2010-12-13 16:41:48","status":"1"}}},"server_array":[{"id":"1","name":"anes.yyy.net"},{ "id":"2","name":"neseema.xxx.net"}],"service_array":[{"id":"5","name":"POP3"}, {"id":"6","name":"Cpanel"},{"id":"3","name":"SMTP"}],"sort_by":"servername", "sort_order":"ASC","pagelinks":"","totrows":"2","offset":"0","limitvalue":"10", "rows_monitor":2,"current":"monitor","uri":false} 

如何分析这一点,并采取进一步 处理结果在JavaScript

回答

3

您应该使用jQuery.parseJSON。如果有的话,它将使用native JSON,并且如果有必要,只有在进行完整性检查后才使用eval

1

Json已经是一些JavaScript了。所以解析只是使用eval

,如:

var foobar = eval(yourjson); 
alert(foobar.user); 

而且jQuery有一些功能,它jquery.parseJSON

,如:

var foobar = $.parseJSON(yourjson); 

jQuery是更好,因为它会使一些检查和表现更好。

+0

'eval'是不安全的,并且通常比原生解析更慢[http://www.vinylfox.com/json-decoding-speed-comparison/]。 – 2010-12-15 08:56:29

+0

@Matthew:感谢您的评论,但我还在写作;-) – RageZ 2010-12-15 08:58:59

2

首先,下载jQuery

二,将其包含在您的页面中。

第三,如果你的变量是这样的:

var jsonString = '{"user":{"id":"1","firstname":"Freelogin","created":"0000-00-00 00:00:00","lastname":"Administrator","email":"[email protected]", "usergroup_id":"1","status":"1","ip_enable":"N","priv":"0","expire":""},"data":{ "1":{"5":{"last_update":"2010-12-13 16:16:16","status":"0"},"3":{"last_update":"2010-12-13 16:41:48","status":"1"}},"2":{"6":{"last_update":"2010-12-13 16:41:48","status":"1"}}},"server_array":[{"id":"1","name":"anes.yyy.net"},{ "id":"2","name":"neseema.xxx.net"}],"service_array":[{"id":"5","name":"POP3"}, {"id":"6","name":"Cpanel"},{"id":"3","name":"SMTP"}],"sort_by":"servername", "sort_order":"ASC","pagelinks":"","totrows":"2","offset":"0","limitvalue":"10", "rows_monitor":2,"current":"monitor","uri":false}'; 

然后,

var parsedJson = jQuery.parseJSON(jsonString); 

会给你想要的分析对象是准备好操作。

我试过你的JSON字符串JSONLint它说它是有效的,所以你应该没有问题。

+1

您的示例(也可能是问题)是错误的。 'jsonString'不是JSON或字符串。它只是一个JavaScript对象。 – 2010-12-15 08:58:32

+0

@Matthew:两个引号确实有所作为... – darioo 2010-12-15 09:04:23

0

你可能有你在索姆字符串变量

var json = '{"user":{"id":"1","firstname":"Freelogin","created":"0000-00-00 00:00:00","lastname":"Administrator","email":"[email protected]", "usergroup_id":"1","status":"1","ip_enable":"N","priv":"0","expire":""},"data":{ "1":{"5":{"last_update":"2010-12-13 16:16:16","status":"0"},"3":{"last_update":"2010-12-13 16:41:48","status":"1"}},"2":{"6":{"last_update":"2010-12-13 16:41:48","status":"1"}}},"server_array":[{"id":"1","name":"anes.yyy.net"},{ "id":"2","name":"neseema.xxx.net"}],"service_array":[{"id":"5","name":"POP3"}, {"id":"6","name":"Cpanel"},{"id":"3","name":"SMTP"}],"sort_by":"servername", "sort_order":"ASC","pagelinks":"","totrows":"2","offset":"0","limitvalue":"10", "rows_monitor":2,"current":"monitor","uri":false}'; 

现在你可以很容易地通过jQuery的解析(您也可以通过本地JavaScript的eval解析它,但也有一些安全问题,严重格式化输入字符串JSON FE,覆盖有jQuery和不EVAL)

result = jQuery.parseJSON(json); 

现在您可以轻松进入您的JSON对象

alert('Hello user, your name is ' + json.user.firstname); 
0

你不需要jQuery,在ECMAScript5 JSON对象将被本地支持,并且可以使用它来使用JSON.parse方法将字符串解析为JS对象。 IE9将支持ES5和FF,Chrome已经做到了。

目前,您可以使用json2.js(您可以查看源码here)作为本机不支持JSON的浏览器的后备。

+0

IE 8还支持'JSON.parse'和'JSON.stringify'。 – 2010-12-15 09:35:22