詳解JavaScript中js對(duì)象與JSON格式字符串的相互轉(zhuǎn)換

首先我們來(lái)看一下js中JSON格式的字符串

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比金秀網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式金秀網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋金秀地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。

var JSONStr1 = "{\"name\" : \"張三\"}";

注意以下的寫(xiě)法不是js中JSON格式的字符串,它只是一個(gè)js的字符串。

var JSONStr2 = "{'name' : '張三'}";

我們看JSON語(yǔ)法中對(duì)于字符串的定義:是由雙引號(hào)包圍的任意數(shù)量Unicode字符的集合,使用反斜線轉(zhuǎn)義。一個(gè)字符(character)即一個(gè)單獨(dú)的字符串(character string)。

下面我們來(lái)看一下在js中怎么把JSON格式的字符串轉(zhuǎn)換成一個(gè)JS對(duì)象。(

var jsObj3 = eval("(" + JSONStr1 + ")");
var jsObj4 = JSON.parse(JSONStr1);

推薦使用第二種方式具體原因請(qǐng)參看:http://www.json.org.cn/resource/json-in-javascript.htm

此外提一句使用這兩種方式轉(zhuǎn)換后的js對(duì)象,應(yīng)該是“一個(gè)符合JSON數(shù)據(jù)格式的js對(duì)象”,也就是說(shuō)它的屬性是帶著引號(hào)的,這只是我的一種猜測(cè),因?yàn)槿绻鸍SON格式的字符串如下表示:

var JSONStr1 = "{\"f[name]\" : \"張三\"}";

那么轉(zhuǎn)換后的JS對(duì)象的屬性必定要加上引號(hào),因?yàn)閖s對(duì)象的屬性不加引號(hào)只能使用字母,數(shù)字,下劃線和$符號(hào)表示,使用其它符號(hào)屬性就要加上引號(hào)了,所以說(shuō)JS對(duì)象字面量表示法中屬性加上引號(hào)是不會(huì)錯(cuò)的。另外如果JSON格式的字符串如上所示,那么轉(zhuǎn)換后的js對(duì)象對(duì)f[name]取值就不能使用 jsObj4.f[name] 要用 jsObj4['f[name]'] ,因?yàn)橛刑厥庾址?,這點(diǎn)要注意了。對(duì)于我的猜測(cè),讀者要有異議,可以提給我。

我們?cè)賮?lái)看看在js中js對(duì)象與JSON格式字符串的轉(zhuǎn)換。下面我準(zhǔn)備了幾組js對(duì)象加以說(shuō)明:

<input type="button" value="測(cè)試按鈕1" onclick="testJson();"/>

<script type="text/javascript">
  //(1) 這是一個(gè)js對(duì)象
  var jsObj1 = {
    name : "張三"
  }
  //(2)這是一個(gè)內(nèi)部帶有方法js對(duì)象。
  var jsObj2 = {
    name : "張三",
    func : function(){
      alert("hello");
    }
  }
  //(3)這是一個(gè)符合JSON數(shù)據(jù)格式的js對(duì)象
  var jsonObj = {
    "name" : "張三",
    "age" : 10,
    "remark" : {"high" :170,"address" : "beijingshi"}
  }
  // js數(shù)組對(duì)象
  var jsArray = [
    {name : "張三"},
    {"age" : 10}
  ]

  function testJson(){

    var JSONstr1 = JSON.stringify(jsObj1);
    var JSONstr2 = JSON.stringify(jsObj2);
    var JSONstr3 = JSON.stringify(jsonObj);
    var JSONstr4 = JSON.stringify(jsArray);
    alert(JSONstr1);
    alert(JSONstr2);
    alert(JSONstr3);
    alert(JSONstr4);

  }

看一下彈框的內(nèi)容:

               (1)                                              (2)                                      

詳解JavaScript中js對(duì)象與JSON格式字符串的相互轉(zhuǎn)換                  詳解JavaScript中js對(duì)象與JSON格式字符串的相互轉(zhuǎn)換

                      (3)                                                                      ?。?)

詳解JavaScript中js對(duì)象與JSON格式字符串的相互轉(zhuǎn)換 詳解JavaScript中js對(duì)象與JSON格式字符串的相互轉(zhuǎn)換 

其中 (1)、(3)、(4)的執(zhí)行結(jié)果說(shuō)明,JSON解析器的stringify()函數(shù)對(duì)于js對(duì)象是fou符合JSON格式是不加限定,都可以把js對(duì)象轉(zhuǎn)換成JSON格式字符串。

(2)的執(zhí)行結(jié)果說(shuō)明,js對(duì)象中如果沒(méi)有JSON表示的值(比如函數(shù)和undefined)將會(huì)被排除。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

標(biāo)題名稱:詳解JavaScript中js對(duì)象與JSON格式字符串的相互轉(zhuǎn)換
文章起源:http://muchs.cn/article40/ghgjeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、網(wǎng)站維護(hù)、營(yíng)銷型網(wǎng)站建設(shè)微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)