javascript使用eval解析json的注意點

來源:互聯網
上載者:User

對於json格式的字串,在使用eval將字串轉換為json對象時需要注意在前後加上小括弧。如下所示:

<script type="text/javascript">
    var data = '{root:[{name:"1", value:"0"},{name:"6101", value:"北京"},{name:"6102", value:"天津"}]}';
    var dataObj_1 = eval(data);
    var dataObj_2 = eval("(" + data + ")");
    console.info(dataObj_1);
    console.info(dataObj_2);
</script>

該代碼的運行結果如下:

 

該代碼的運行結果如下:

 

 

圖1:代碼運行結果

 

之所以會出現如上的結果,是因為eval本身就可以解析並且運行字串中的代碼。由於json是以{}的方式來開始和結束的,在JS中,它會被當成是一個語句塊來處理,所以想要不被當作語句塊來處理,就必須強制性的將它轉為一種運算式。加上圓括弧的目的就是為了使函數在處理的時候強制將括弧內的運算式轉為對象,而不是作為語句來執行。

 

在項目上遇到了這個問題,在網上找到了這種解釋,挺容易接受的,但是值得mark一下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.