javascript中JSON.parse()与eval()解析json的区别_javascript技巧
May 23, 2016 pm 01:15 PM本文实例讲述了javascript中JSON.parse()与eval()解析json的区别。分享给大家供大家参考,具体如下:
JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是Javascript原生格式,这意味着在javascript中处理JSON数据
基本格式:
varjsonData='{"data1":"Hello,","data2":"world!"}'
调用方法jsonData.data1,jsonData.data2
很多json数据存入数组
var jsonData=[ {"name":"LiLei","age":19,"sex":"male"}, {"name":"HanMei","age":18,"sex":"famale"} ]
调用方法jsonData[0].name,jsonData[1].sex
总体而言,json是相对比较容易的理解和使用的,但同时存在很多的陷阱,如果不注意的话很容易掉进去。
json的的解析方法
json的解析方法共有两种:eval() 和 JSON.parse(),使用方法如下:
var jsonData = '{"data1":"Hello,", "data2":"world!}'; var evalJson=eval('('+jsonData+')'); var jsonParseJson=JSON.parse(jsonData);
这样就把jsonData这个json格式的字符串转换成了JSON对象。
二者的区别如下:
var value = 1; var jsonstr = '{"data1":"hello","data2":++value}'; var data1 = eval_r('('+jsonstr+')'); console.log(data1);//这时value值为2 var data2=JSON.parse(jsonstr); console.log(data2);//报错
可以看到控制输出台的结果,第一个eval()顺利执行,第二个报错了。从上例就可以明显地看出,eval在解析字符串时,会执行该字符串中的代码(这样的后果是相当恶劣的),如上例中,由于用eval解析一个json字符串而造成原先的value的值改变。
《高性能Javascript》(本站下载地址:http://www.jb51.net/books/36680.html)一书即指出:
警告:关于JSON和eval需要注意的是:在代码中使用eval是很危险的,特别是用它执行第三方的JSON数据(其中可能包含恶意代码)时,尽可能使用JSON.parse()方法解析字符串本身。该方法可以捕捉JSON中的语法错误,并允许你传入一个函数,用来过滤或转换解析结果。如果此方法以备Firfox 3.5 、IE8 及 Safari 4 原生支持。大多数javascript类库包含的JSON解析代码会直接调用原生版本,如果没有原生支持的话,会调用一个略微不那么强大的非原生版本来处理。
更多关于JavaScript相关内容可查看本站专题:《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

DeepSeek Apakah perbezaan antara versi R1 dan V3

Ringkasan Soalan Lazim untuk Penggunaan DeepSeek

Apakah perbezaan antara pra-pasaran dan perdagangan selepas pasaran? Penjelasan terperinci mengenai perbezaan antara perdagangan pra-pasaran dan selepas pasaran

Mengapa Bittensor dikatakan sebagai 'Bitcoin' di trek AI?

Adakah terdapat perbezaan antara bitcoin Korea Selatan dan bitcoin domestik?

Pepe membeli dan dijual dengan cara yang besar, adakah Mutm pelaburan yang lebih bijak pada tahun 2025?

Proksi menegak: senario aplikasi dan tafsiran potensi mengganggu proksi enkripsi asli
