詳解js中Json的語(yǔ)法與格式
JSON 文本格式在語(yǔ)法上與創(chuàng)建 JavaScript 對(duì)象的代碼相同。
由于這種相似性,無(wú)需解析器,JavaScript 程序能夠使用內(nèi)建的 eval() 函數(shù),用 JSON 數(shù)據(jù)來(lái)生成原生的 JavaScript 對(duì)象。
JSON語(yǔ)法規(guī)則:
數(shù)據(jù)在 名稱/值 對(duì)仲
數(shù)據(jù)由逗號(hào)分隔
花括號(hào)保存對(duì)象
方括號(hào)保存數(shù)組
JSON 名稱/值 對(duì)介紹
"name":"張飛", "age":23
Json的值可以是:
數(shù)字(整數(shù)或浮點(diǎn)數(shù))
字符串(要包括在雙引號(hào)中)
邏輯值(true或false)
數(shù)組(在方括號(hào)中)
對(duì)象(在花括號(hào)中)
Json轉(zhuǎn)javascript對(duì)象的方法為:
eval("(" + str + ")");
代碼示例:
<html> <head> <title>Json測(cè)試</title> <script src="/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script> <script type="text/javascript"> //基本上,Json返回的要么是對(duì)象,要么是數(shù)組,如果單純返回一個(gè)字符串,那么就沒(méi)有必要用Json了,因此 //Json基本就下面這些可,不過(guò)要注意雙引號(hào) var str0 = "{employees:'測(cè)試'}"; var obj0 = eval("(" + str0 + ")"); alert(obj0.employees); //輸出測(cè)試 var str = "{name:'張三',Age:21}"; var obj = eval("(" + str + ")"); document.write(obj.name + obj.Age); //輸出 張三21 alert(obj.name); //別看下面那段Json長(zhǎng),其實(shí)是一個(gè)對(duì)象,屬性employees的值是一個(gè)對(duì)象數(shù)組。和上面的相比,只是name:張三 中的"張三"字符串 變成了對(duì)象數(shù)組而已 var str2 = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}'; var obj2 = eval("(" + str2 + ")"); alert(obj2.employees[0].firstName); //彈出 Bill var str3 = "[1,2,3,4,5,6]"; //json 數(shù)組 var obj3 = eval("(" + str3 + ")"); //輸出 2 alert(obj3[1]); </script> </head> <body> <div id="div1"> </div> </body> </html>
Json與JavaScript對(duì)象轉(zhuǎn)換
JSON轉(zhuǎn)javascript對(duì)象
//Json轉(zhuǎn)對(duì)象1 function JsonToObject(str) { return eval("(" + str + ")"); } //Json轉(zhuǎn)對(duì)象2 function strToJson(str){ var json = (new Function("return " + str))(); return json; } //Json轉(zhuǎn)對(duì)象3 jQuery工具函數(shù) $.parseJSON()
javascript對(duì)象轉(zhuǎn)JSON
//javascript對(duì)象轉(zhuǎn)Json function ObjectToJson(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return json2str(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } for (var i in o) arr.push("'" + i + "':" + fmt(o[i])); return '{' + arr.join(',') + '}'; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家有所幫助,謝謝對(duì)腳本之家的支持!
相關(guān)文章
微信小程序中使用ECharts 異步加載數(shù)據(jù)的方法
這篇文章主要介紹了微信小程序中使用ECharts 異步加載數(shù)據(jù)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06Web開(kāi)發(fā)中客戶端的跳轉(zhuǎn)與服務(wù)器端的跳轉(zhuǎn)的區(qū)別
這篇文章主要介紹了Web開(kāi)發(fā)中客戶端的跳轉(zhuǎn)與服務(wù)器端的跳轉(zhuǎn)的區(qū)別 ,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03Javascript String對(duì)象擴(kuò)展HTML編碼和解碼的方法
Javascript String對(duì)象擴(kuò)展HTML編碼和解碼的代碼2009-06-06頁(yè)面回到頂部的三種實(shí)現(xiàn)(錨標(biāo)記,js)
本文不再介紹,大家根據(jù)自己需要選擇其中的一種即可,總之簡(jiǎn)約最美的,能減少代碼就減少代碼,能不調(diào)用的就別調(diào)用,要不是天緣博客的文章都是牛長(zhǎng)也不會(huì)添加這個(gè)功能2012-10-10簡(jiǎn)單通過(guò)settimeout看javascript的運(yùn)行機(jī)制
這篇文章主要給大家介紹了關(guān)于如何通過(guò)settimeout看javascript的運(yùn)行機(jī)制的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用javascript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05JavaScript實(shí)現(xiàn)獲取最近7天的日期的方法詳解
這篇文章主要想和大家分享一些JavaScript開(kāi)發(fā)中會(huì)用到的小技巧,本文主要介紹了js獲取最近7天的日期,判斷當(dāng)前日期時(shí)間大于指定日期時(shí)間等內(nèi)容,需要的可以參考一下2023-04-04javascript仿163網(wǎng)盤無(wú)刷新文件上傳系統(tǒng)
這個(gè)仿163網(wǎng)盤無(wú)刷新文件上傳系統(tǒng),并沒(méi)有用使用.net的控件,完全的手工制作。2008-10-10JavaScript中的稀疏數(shù)組與密集數(shù)組[譯]
一般來(lái)說(shuō),JavaScript中的數(shù)組是稀疏的,也就是說(shuō),數(shù)組中的元素之間可以有空隙,因?yàn)橐粋€(gè)數(shù)組其實(shí)就是一個(gè)鍵值映射.本文解釋了如何創(chuàng)建稀疏數(shù)組和不稀疏的數(shù)組2012-09-09