首先我們來看一下js中JSON格式的字符串
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比金秀網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式金秀網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋金秀地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
var JSONStr1 = "{\"name\" : \"張三\"}";
注意以下的寫法不是js中JSON格式的字符串,它只是一個(gè)js的字符串。
var JSONStr2 = "{'name' : '張三'}";
我們看JSON語法中對于字符串的定義:是由雙引號包圍的任意數(shù)量Unicode字符的集合,使用反斜線轉(zhuǎn)義。一個(gè)字符(character)即一個(gè)單獨(dú)的字符串(character string)。
下面我們來看一下在js中怎么把JSON格式的字符串轉(zhuǎn)換成一個(gè)JS對象。(
var jsObj3 = eval("(" + JSONStr1 + ")"); var jsObj4 = JSON.parse(JSONStr1);
推薦使用第二種方式具體原因請參看:http://www.json.org.cn/resource/json-in-javascript.htm
此外提一句使用這兩種方式轉(zhuǎn)換后的js對象,應(yīng)該是“一個(gè)符合JSON數(shù)據(jù)格式的js對象”,也就是說它的屬性是帶著引號的,這只是我的一種猜測,因?yàn)槿绻鸍SON格式的字符串如下表示:
var JSONStr1 = "{\"f[name]\" : \"張三\"}";
那么轉(zhuǎn)換后的JS對象的屬性必定要加上引號,因?yàn)閖s對象的屬性不加引號只能使用字母,數(shù)字,下劃線和$符號表示,使用其它符號屬性就要加上引號了,所以說JS對象字面量表示法中屬性加上引號是不會(huì)錯(cuò)的。另外如果JSON格式的字符串如上所示,那么轉(zhuǎn)換后的js對象對f[name]取值就不能使用 jsObj4.f[name] 要用 jsObj4['f[name]'] ,因?yàn)橛刑厥庾址@點(diǎn)要注意了。對于我的猜測,讀者要有異議,可以提給我。
我們再來看看在js中js對象與JSON格式字符串的轉(zhuǎn)換。下面我準(zhǔn)備了幾組js對象加以說明: