2010-12-15 35 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