Js中JSON.stringify()與JSON.parse()與eval()詳解及使用案例

來源:互聯網
上載者:User

標籤:交換   強制   type   改變   獨立   logs   轉化   name   class   

JSON(JavaScript Object Notation)是一種輕量級的資料交換格式。因為採用獨立於語言的文字格式設定,也使用了類似於C語言家族的習慣,擁有了這些特性使使JSON稱為理想的資料交換語言,作用是易於閱讀和編寫,同時也易於機器解析和產生(一般用於網路傳輸速率)。

一:JSON.parse();

  作用:將json字串轉換成json對象

  文法:JSON. parse(text[,reviver])。

  參數:

    text:必選,一個有效json字串。

    reviver:可選。

  傳回值:一個對象或者數組。

    <script type="text/javascript">        var jsonStr = ‘{"name":"huangxiaojian","age":"23"}‘;        var jsonObj = JSON.parse(jsonStr);        console.log(jsonObj); //{name: "huangxiaojian", age: "23"}    </script>

 

二:JSON.stringify();

  作用:將json對象轉換成json字串。

  文法:JSON.stringify(value [, replacer] [, space]) 。

  參數:

    value:必選,通常為對象或者數組。

    replacer:可選,用於轉換結果的函數或者數組。

    space:可選,向傳回值 JSON 文本添加縮排、空格和分行符號以使其更易於讀取。

  傳回值:一個包含json文本的字串。

    <script type="text/javascript">        var jsonObj = {"name":"張三","age":"23歲"};        var jsonStr = JSON.stringify(jsonObj);        console.log(jsonStr); //{"name":"張三","age":"23歲"}    </script>

 

三:eval();

  作用:eval()函數可計算某個字串,並執行其中的javascript運算式或要執行的語句。

  文法:eval(string)。

  參數: string  必須,需要計算的字串,其中含有要計算的javascript運算式或要執行的語句。

  傳回值:返回計算string的值,沒有的話不做任何改變返回。

    <script type="text/javascript">        eval(‘x = 10; y = 5; console.log(x*y)‘);                console.log(eval(‘5+5‘));                var x = 10;        console.log(eval(‘x + 5‘));    </script>

  使用eval()函數也可以將JSON字串解析為對象,這個功能能完成JSON.parse()的功能,但是有不一樣的地方,請看下面代碼 :

    <script type="text/javascript">        var str = ‘{"name":"huangxiaojian","age":"23"}‘;         var info = JSON.parse(str);        console.log(info); // Object {name: "huangxiaojian", age: "23"}        var info = eval(‘(‘ + str + ‘)‘);        console.log(info); // Object {name: "huangxiaojian", age: "23"}    </script>

  

  大家注意到eval()還要用一對圓括弧將字串包起來,對此我尋找到比較好的解釋就是:

  原因:歸結於eval本身的問題,由於json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種運算式。

  解決方案:加上圓括弧的目的是迫使eval函數在處理JavaScript代碼的時候強制將括弧內的運算式(expression)轉化為對象,而不是作為語句(statement)來執行。舉一個例子,例如對象字面量{},如若不加外層的括弧,那麼eval會將大括弧識別為JavaScript代碼塊的開始和結束標記,那麼{}將會被認為是執行了一句空語句。請看下列例子的不同: 

    <script type="text/javascript">        console.log(eval("{}")); // undefined        console.log(eval("(" + "{}" + ")")); // Object {}    </script>

 

Js中JSON.stringify()與JSON.parse()與eval()詳解及使用案例

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.