搜尋
首頁web前端js教程javascript讀寫json範例_javascript技巧

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.username);


alert(user.username);

alert(user.username);


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 =

{

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.age); alert(user.info.cellphone); alert(user.address[0].city);
alert(user.address[0].postcode);

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

user.username = "Tom";

alert(user.username);

}


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

js 程式碼




複製程式碼


程式碼如下:


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());

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(

var mailAjax = new Ajax.Request(
🎜>
{

method: 'get',

onComplete: jsonResponse

}

);

}

); 🎜>
function jsonResponse(originalRequest) {

alert(originalRequest.responseText);

var myobj = originalRequest.responseg; .name);

}

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

js 程式碼

複製程式碼 程式碼如下:
alert(originalRequest.responseText);

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

alert(obj);
}


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 = "carcar =" 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(🎜> private void doService(HttpSer)S. IOException {
String s3 = request.getParameter("car");

try {

JSONObject jsonObj = new JSONObject(s3);
JSONObject jsonObj = new JSONObject(s3);
>🎜> .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(HttpServletalquest request, Httoc​​yal >String s3 = request.getParameter("car");
try {

JSONObject jsonObj = new JSONObject(s3);

System。 (jsonObj.getString("model"));

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

} catch (JSONException e) {

e.printStackTrace();

}

JSONObject resultJSON = new JSONObject();

try {
resultJSON. , "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.response) {
alert(originalRequest.response); 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服務:
複製代碼 代碼如下:



Sean Kelly
SK🎜>Sean Kelly
SK Consulting

kelly@seankelly.biz

kelly@seankelly .tv



1 214 555 1212
1 214 555 1213
1 214 555 1214


1234 Main St
Springfield, TX 78080-1216

5678 Main St
Springfield, TX 78080-1316



http://seankelly.biz/

http://seankelly.tv/




使用JSON, 形式如下: 程式碼如下:


{
"fullname": "Sean Kelly"", 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 = newV​​D req ();
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。 address')[0];
var addrText = fistAddr.firstChild;
var addrValue = addrText.nodeValue;
addrField.value = addrValue;
}
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」的最強音。每個開發者,無論是標準桌面應用程式或網路應用程序,越來越注意到了它的簡單和便捷。希望你能體會到在buzzword- compliant, Web-2.0-based, AJAX-enabled, 敏捷開發中應用到JSON的樂趣。
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境