亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript讀寫json示例

2019-11-20 20:50:21
字體:
來源:轉載
供稿:網友

JSON (JavaScript Object Notation)一種簡單的數據格式,比xml更輕巧。 JSON 是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON 數據不需要任何特殊的 API 或工具包。

JSON的規則很簡單: 對象是一個無序的“‘名稱/值'對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值' 對”之間使用“,”(逗號)分隔。具體細節參考http://www.json.org/json-zh.html

舉個簡單的例子:

js 代碼

復制代碼 代碼如下:

function showJSON() {

var user =

{

"username":"andy",

"age":20,

"info": { "tel": "123456", "cellphone": "98765"},

"address":

[

{"city":"beijing","postcode":"222333"},

{"city":"newyork","postcode":"555666"}

]

}

alert(user.username);

alert(user.age);

alert(user.info.cellphone);

alert(user.address[0].city);

alert(user.address[0].postcode);

}

這表示一個user對象,擁有username, age, info, address 等屬性。

同樣也可以用JSON來簡單的修改數據,修改上面的例子

js 代碼
復制代碼 代碼如下:

function showJSON() {

var user =

{

"username":"andy",

"age":20,

"info": { "tel": "123456", "cellphone": "98765"},

"address":

[

{"city":"beijing","postcode":"222333"},

{"city":"newyork","postcode":"555666"}

]

}

alert(user.username);

alert(user.age);

alert(user.info.cellphone);

alert(user.address[0].city);

alert(user.address[0].postcode);

user.username = "Tom";

alert(user.username);

}

JSON提供了json.js包,下載http://www.json.org/json.js 后,將其引入然后就可以簡單的使用object.toJSONString()轉換成JSON數據。

js 代碼
復制代碼 代碼如下:

function showCar() {

var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");

alert(carr.toJSONString());

}

function Car(make, model, year, color) {

this.make = make;

this.model = model;

this.year = year;

this.color = color;

}

可以使用eval來轉換JSON字符到Object

js 代碼
復制代碼 代碼如下:

function myEval() {

var str = '{ "name": "Violet", "occupation": "character" }';

var obj = eval('(' + str + ')');

alert(obj.toJSONString());

}

或者使用parseJSON()方法

js 代碼
復制代碼 代碼如下:

function myEval() {

var str = '{ "name": "Violet", "occupation": "character" }';

var obj = str.parseJSON();

alert(obj.toJSONString());

}

下面使用prototype寫一個JSON的ajax例子。

先寫一個servlet (我的是servlet.ajax.JSONTest1.java)就寫一句話

java 代碼
復制代碼 代碼如下:

response.getWriter().print("{ /"name/": /"Violet/", /"occupation/": /"character/" }");

再在頁面中寫一個ajax的請求

js 代碼
復制代碼 代碼如下:

function sendRequest() {

var url = "/MyWebApp/JSONTest1";

var mailAjax = new Ajax.Request(

url,

{

method: 'get',

onComplete: jsonResponse

}

);

}

function jsonResponse(originalRequest) {

alert(originalRequest.responseText);

var myobj = originalRequest.responseText.parseJSON();

alert(myobj.name);

}

prototype-1.5.1.js中提供了JSON的方法,String.evalJSON(), 可以不使用json.js, 修改上面的方法

js 代碼
復制代碼 代碼如下:

function jsonResponse(originalRequest) {

alert(originalRequest.responseText);

var myobj = originalRequest.responseText.evalJSON(true);

alert(myobj.name);

}

JSON還提供了java的jar包 http://www.json.org/java/index.html API也很簡單,下面舉個例子

在javascript中填加請求參數

js 代碼
復制代碼 代碼如下:

function sendRequest() {

var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");

var pars = "car=" + carr.toJSONString();

var url = "/MyWebApp/JSONTest1";

var mailAjax = new Ajax.Request(

url,

{

method: 'get',

parameters: pars,

onComplete: jsonResponse

}

);

}

使用JSON請求字符串就可以簡單的生成JSONObject并進行解析,修改servlet添加JSON的處理(要使用json.jar)

java 代碼
復制代碼 代碼如下:

private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {

String s3 = request.getParameter("car");

try {

JSONObject jsonObj = new JSONObject(s3);

System.out.println(jsonObj.getString("model"));

System.out.println(jsonObj.getInt("year"));

} catch (JSONException e) {

e.printStackTrace();

}

response.getWriter().print("{ /"name/": /"Violet/", /"occupation/": /"character/" }");

}

同樣可以使用JSONObject生成JSON字符串,修改servlet

java 代碼
復制代碼 代碼如下:

private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {

String s3 = request.getParameter("car");

try {

JSONObject jsonObj = new JSONObject(s3);

System.out.println(jsonObj.getString("model"));

System.out.println(jsonObj.getInt("year"));

} catch (JSONException e) {

e.printStackTrace();

}

JSONObject resultJSON = new JSONObject();

try {

resultJSON.append("name", "Violet")

.append("occupation", "developer")

.append("age", new Integer(22));

System.out.println(resultJSON.toString());

} catch (JSONException e) {

e.printStackTrace();

}

response.getWriter().print(resultJSON.toString());

}

js 代碼
復制代碼 代碼如下:

function jsonResponse(originalRequest) {

alert(originalRequest.responseText);

var myobj = originalRequest.responseText.evalJSON(true);

alert(myobj.name);

alert(myobj.age);

}

參考

http://www.json.org/js.html

http://www.blogjava.net/Jkallen/archive/2006/03/28/37905.html

http://www.json.org/

http://www.prototypejs.org/learn/json

http://www.json.org/java/index.html

http://www.ibm.com/developerworks/cn/web/wa-ajaxintro10/index.html

使用JSON
JSON也就是JavaScript Object Notation,是一個描述數據的輕量級語法。JSON的優雅是因為它是JavaScript語言的一個子集。接下來你將看到它為什么如此重要。首先,來比較一下JSON和XML語法。

JSON和XML都使用結構化方法描述數據。例如一個地址簿應用程序可以提供用來產生XML格式的地址卡的web服務:
復制代碼 代碼如下:

<?xml version='1.0' encoding='UTF-8'?>
<card>
<fullname>Sean Kelly</fullname>
<org>SK Consulting</org>
<emailaddrs>
<address type='work'>kelly@seankelly.biz</address>
<address type='home' pref='1'>kelly@seankelly.tv</address>
</emailaddrs>
<telephones>
<tel type='work' pref='1'>+1 214 555 1212</tel>
<tel type='fax'>+1 214 555 1213</tel>
<tel type='mobile'>+1 214 555 1214</tel>
</telephones>
<addresses>
<address type='work' format='us'>1234 Main St
Springfield, TX 78080-1216</address>
<address type='home' format='us'>5678 Main St
Springfield, TX 78080-1316</address>
</addresses>
<urls>
<address type='work'>http://seankelly.biz/</address>
<address type='home'>http://seankelly.tv/</address>
</urls>
</card>

使用JSON, 形式如下:
復制代碼 代碼如下:

{
"fullname": "Sean Kelly",
"org": "SK Consulting",
"emailaddrs": [
{"type": "work", "value": "kelly@seankelly.biz"},
{"type": "home", "pref": 1, "value": "kelly@seankelly.tv"}
],
"telephones": [
{"type": "work", "pref": 1, "value": "+1 214 555 1212"},
{"type": "fax", "value": "+1 214 555 1213"},
{"type": "mobile", "value": "+1 214 555 1214"}
],
"addresses": [
{"type": "work", "format": "us",
"value": "1234 Main StnSpringfield, TX 78080-1216"},
{"type": "home", "format": "us",
"value": "5678 Main StnSpringfield, TX 78080-1316"}
],
"urls": [
{"type": "work", "value": "http://seankelly.biz/"},
{"type": "home", "value": "http://seankelly.tv/"}
]
}

如 你所看到的,JSON有結構化的嵌套數據元素,這一點和XML相似。JSON也是基于文本的,XML也是如此。兩者都使用Unicode。JSON和 XML都很容易閱讀。主觀上,JSON更清晰,冗余更少。JSON WEB站點嚴格地描述了JSON語法,目前就是這樣的。它確實是一個簡單的小語言! XML確實適合標記文檔,但是JSON是數據交互的理想格式。每個JSON文檔描述了一個這樣一個對象,該對象包含有:嵌套對象、數組、字符串、數字、布爾值或空值。

在這些地址卡例子代碼中,JSON版本是更輕量級的,只占用了682字節的空間,而XML版本需要744字節空間。盡管這不是一個可觀的節省。而實際的好處則來自解析過程。

XML對比JSON:地位喪失
通過使用XMLHttpRequest對象,可以從你的基于AJAX的應用程序取得XML和JSON文件。典型的,交互代碼如下:
復制代碼 代碼如下:

var req = new XMLHttpRequest();
req.open("GET", "http://localhost/addr?cardID=32", /*async*/true);
req.onreadystatechange = myHandler;
req.send(/*no params*/null);

作為WEB服務器響應,你提供的處理器函數(myHandler函數)被多次調用,為你提供提前終止事務,更新進度條等機會。通常的,只有在web請求完成以后才起作用:那時,你就可以使用返回的數據了。

為了處理XML版本的地址卡數據,myHandler的代碼如下:
復制代碼 代碼如下:

function myHandler() {
if (req.readyState == 4 /*complete*/) {
// Update address field in a form with first street address
var addrField = document.getElementById('addr');
var root = req.responseXML;
var addrsElem = root.getElementsByTagName('addresses')[0];
var firstAddr = addrsElem.getElementsByTagName('address')[0];
var addrText = fistAddr.firstChild;
var addrValue = addrText.nodeValue;
addrField.value = addrValue;
}
}

值 得注意的是你不必解析XML文檔:XMLHttpRequest對象自動地解析了,并使responseXML中的DOM樹可用。通過使用 responseXML屬性,可以調用getElementsByTagName方法查找文檔的地址部分,你還可以使用第一個去找到它。然后,可以再次調 用getElementsByTagName在地址部分查找第一個地址元素。這就取得了文檔的第一個DOM子節點,就是一個文本節點,并取得節點的值,這 就是你想要的街道地址。最后,可以在表單域中顯示結果。

確實不是一個簡單的工作,現在,使用JSON再試一下:
復制代碼 代碼如下:

function myHandler() {
if (req.readyState == 4 /*complete*/) {
var addrField = document.getElementById('addr');
var card = eval('(' + req.responseText + ')');
addrField.value = card.addresses[0].value;
}
}

你 所做的第一件事情就是解析JSON響應。但是,因為JSON是JavaScript的一個子集,你可以使用JavaScript自己的編譯器來解析它,通過調用eval函數。解析JSON僅需要一行!此外,操縱JSON中的對象就像操縱其他JavaScript對象一樣。這顯然要比通過DOM樹來操縱簡 單,例如:
card.addresses[0].value 是第一個街道地址, "1234 Main Stb &"
card.addresses[0].type 是地址類型, "work"
card.addresses[1] 是家庭地址對象
card.fullname 是card的名稱, "Sean Kelly"
如果更仔細觀察,你可能會發現XML格式中文檔至少有一個跟元素,card。這在JSON里是不存在的,為什么? 大概就是,如果你正在開發JavaScript來訪問Web服務,你已經知道你想要得到的。然而,你可以在JSON中這么使用:
{"card": {"fullname": ...}}

使用這個技術,你的JSON文件總是以一個帶有單一命名屬性的對象開始,該屬性標識了對象的種類。

JSON是快速可靠的嗎?

JSON 提供輕量的小文檔,并且JSON在JavaScript更容易使用。XMLHttpRequest自動為你解析了XML文檔,而你還要手工解析JSON文 件,但是解析JSON比解析XML更慢么?作者通過幾千次的反復測試,使用XMLHttpRequest解析XML和解析JSON,結果是解析JSON比 XML要快10倍!當把AJAX當作桌面應用看待時,速度是最重要的因素,很明顯,JSON更優秀。

當然,你不能總是控制服務器端來為AJAX程序產生數據。你還可以使用第三方服務器代替服務器提供XML格式的輸出。并且,如果服務器恰好提供JSON,你可以確定你真的想使用它嗎?

代碼中值得注意的是,你將響應文本直接傳入到eval中。如果你控制著服務器,就可以這么做。如果不是,一個惡意服務器可以使你的瀏覽器執行危險操作。在這樣的情況下,你最好使用寫在JavaScript中的代碼來解析JSON。幸運地,這已經有了。

說到解析,Python愛好者可能注意到JSON不只是JavaScript的子集,它還是Python的一個子集。你可以在Python中直接執行JSON,或者使用安全JSON解析代替。JSON.org網站列舉了許多常用JSON解析器。

服務器端的JSON

到 現在為止,你或許將焦點注意在運行在客戶瀏覽器中的基于AJAX的web應用程序使用JSON。自然地,首先,JSON格式的數據必須在服務器端產生。幸 運地是,創建JSON或將其他存在的數據轉換成JSON是相當簡單的。一些WEB應用程序框架,例如TurboGears,自動包括對JSON輸出的支 持。

此外商業WEB服務提供商也注意到了JSON。Yahoo最近創建了許多基于JSON的web服務。Yahoo的多種搜索服務,履行計劃,del.icio.us,還有高速公路交通服務也都支持JSON輸出。毫無疑問,其他主要WEB服務提供商也將加入到對JSON的支持中。

總結

JSON 的聰明在于它是JavaScript和Python的子集,使得它更易用,為AJAX提供高效的數據交互。它解析更快,比XML更易使用。JSON正成為 現在“Web 2.0”的最強音。每個開發者,無論是標準桌面應用程序或Web應用程序,越來越注意到了它的簡單和便捷。我希望你能體會到在buzzword- compliant, Web-2.0-based, AJAX-enabled, 敏捷開發中應用到JSON的樂趣。

PS:關于json操作,這里再為大家推薦幾款比較實用的json在線工具供大家參考使用:

在線JSON代碼檢驗、檢驗、美化、格式化工具:
http://tools.VeVB.COm/code/json

JSON在線格式化工具:
http://tools.VeVB.COm/code/jsonformat

在線XML/JSON互相轉換工具:
http://tools.VeVB.COm/code/xmljson

json代碼在線格式化/美化/壓縮/編輯/轉換工具:
http://tools.VeVB.COm/code/jsoncodeformat

在線json壓縮/轉義工具:

http://tools.VeVB.COm/code/json_yasuo_trans

C語言風格/HTML/CSS/json代碼格式化美化工具:
http://tools.VeVB.COm/code/ccode_html_css_json

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久久东京| 国产日韩精品一区二区| 久久黄色av网站| 亚洲97在线观看| 国产精品综合久久久| 亚洲人成在线电影| 懂色av中文一区二区三区天美| 麻豆精品精华液| 成人亚洲欧美一区二区三区| 久久中文字幕视频| 国产亚洲欧洲黄色| 国产视频丨精品|在线观看| 这里只有视频精品| 久久亚洲欧美日韩精品专区| 久久久久久久爱| 亚洲精品大尺度| 国产精品大陆在线观看| 日韩成人黄色av| 精品国产区一区二区三区在线观看| 日韩最新中文字幕电影免费看| 成人精品视频久久久久| 国产精品视频成人| 亚洲欧美日韩一区二区在线| 亚洲国产精品成人va在线观看| 奇米4444一区二区三区| 日韩精品在线免费观看视频| 夜夜嗨av一区二区三区免费区| 亚洲大胆人体av| 亚洲乱亚洲乱妇无码| 欧美一级在线播放| 中文字幕一区日韩电影| 色综合天天狠天天透天天伊人| 国产999精品久久久影片官网| 成人国产精品av| 国产精品成人播放| 亚洲香蕉成视频在线观看| 久久久免费高清电视剧观看| 日韩成人在线观看| 国产一区二区日韩精品欧美精品| 久久91亚洲精品中文字幕| 亚洲成色www8888| 欧美激情欧美激情在线五月| 日韩欧美在线一区| 热久久视久久精品18亚洲精品| 亚洲综合在线播放| 成人做爽爽免费视频| 国产一区二区精品丝袜| 久久色免费在线视频| 国产精品视频yy9099| 久久久亚洲精品视频| 97碰碰碰免费色视频| 在线视频欧美日韩| 中文字幕国内精品| 国产精品高清网站| 欧美性猛交xxx| 亚洲国产毛片完整版| 日韩在线免费高清视频| 日韩精品久久久久久久玫瑰园| 久久欧美在线电影| 欧美性猛交xxxx乱大交| 亚洲福利影片在线| 日韩综合中文字幕| 国产精品白丝jk喷水视频一区| 欧美日韩一区二区免费视频| 日韩成人黄色av| 色yeye香蕉凹凸一区二区av| 日韩女在线观看| 亚洲xxxxx电影| 精品久久久久久久久久久久久久| 久久久久久久久久国产| 国产91精品网站| 欧美亚洲日本黄色| 亚洲第一二三四五区| 欧美日本啪啪无遮挡网站| 国产福利成人在线| 亚洲欧美国产制服动漫| 久久99精品国产99久久6尤物| 自拍偷拍亚洲欧美| 国产精品成人免费电影| 国产精品96久久久久久又黄又硬| 久久久国产精品免费| 一区二区日韩精品| 日韩精品视频免费| 欧美激情国产高清| 91在线观看免费观看| 国内免费久久久久久久久久久| 午夜精品久久久99热福利| 亚洲精品久久久久国产| 自拍偷拍亚洲精品| 日韩极品精品视频免费观看| 亚洲free性xxxx护士hd| 亚洲福利精品在线| 欧美成人精品一区二区三区| 欧美在线视频网站| 国产剧情日韩欧美| 日本伊人精品一区二区三区介绍| 欧美一区二粉嫩精品国产一线天| 国产亚洲精品久久久久久牛牛| 欧美精品在线观看91| 日韩欧美在线字幕| 久久夜色精品亚洲噜噜国产mv| 国产精品黄视频| 国产美女被下药99| 日韩成人在线观看| 一道本无吗dⅴd在线播放一区| 国产一区二区丝袜高跟鞋图片| 亚洲人成在线观| x99av成人免费| 久久在线免费视频| 日韩精品视频在线播放| 91在线观看免费观看| 国外日韩电影在线观看| 色综合久久88| 亚洲精品国产精品乱码不99按摩| 久久九九精品99国产精品| 日韩精品在线视频观看| 国产黑人绿帽在线第一区| 美女999久久久精品视频| 日韩av综合网站| 国产精品专区h在线观看| 国产精品久久久久久五月尺| 日韩精品在线免费播放| 在线播放国产一区中文字幕剧情欧美| 另类天堂视频在线观看| 午夜欧美大片免费观看| 久久99热这里只有精品国产| 国产精品日韩欧美综合| 成人网欧美在线视频| 综合欧美国产视频二区| 亚洲夜晚福利在线观看| 日韩亚洲成人av在线| 欧美成人中文字幕在线| 欧美国产视频一区二区| 91精品在线影院| 一区二区三区视频免费在线观看| 久久久久久久影视| 久久精品久久久久电影| 懂色av影视一区二区三区| 国产主播喷水一区二区| 欧日韩在线观看| 日韩欧美aⅴ综合网站发布| 亚洲欧美精品一区二区| 91中文字幕在线观看| 国自产精品手机在线观看视频| 亚洲97在线观看| 国产精品久久二区| 菠萝蜜影院一区二区免费| 国内精品国产三级国产在线专| 亚洲欧洲xxxx| 成人免费网站在线| 欧美视频在线免费| 欧美一区二三区| 色综合色综合久久综合频道88| 午夜精品久久久久久久99黑人| 欧美一级视频一区二区| 在线播放国产一区中文字幕剧情欧美| 一区二区三区视频在线| 亚洲欧美综合图区| 亚洲国内精品视频| 欧美电影电视剧在线观看| 久久国内精品一国内精品| 国产v综合ⅴ日韩v欧美大片| 91在线中文字幕| 亚洲乱码国产乱码精品精天堂|