jollen.org

Jollen 的 Blog
Jollen's email: jollen # jollen.org
more:  Jollen's Training

Node.js 入門, #10:認識 JSON Stringify

.作者:jollen/
.日期:July 23, 2014 9:37 PM


本文章採用 Markdown 語法撰寫(why?),若無法閱讀內文,請點擊這裡

JSON Stringify

請注意,上述的 JSON 是一個型別(Type),是一個 Array Type。我們不能儲存或傳送「Type」,所以要將 Type 轉成字串(String)後,才能儲存或傳送。例如,對電腦來說,這是一個物件(Object):

{ "name": "James" }

我們把這個物件轉成字串:

"{ \"name\": \"James\" }""

對電腦來說,這才是字串。所以,將 JSON 物件(Object)轉成字串後,才能儲存或傳送。這個動作就叫 JSON Stringify(字串化)。當然,字串化過的 JSON 字串,要使用時,也要解析(Parse)回物件。

在 Node.js 裡如何做 JSON Stringify 呢?只要呼叫 JSON.stringify() 函數即可。例如:

var obj = { "name": "James" };    // 一個物件
var str = JSON.stringify(obj);    // 字串化

下面是簡約的寫法:

var str = JSON.stringify({ "name": "James" });    // 字串化

沿續先前的範例,將 requestHandler.js 加入 JSON Stringify 的處理。完整程式碼如下:

{title="07-websocket-data-push/requestHandler.js"}

// 07-websocket-data-push/requestHandler.js
 1 var querystring = require('querystring'); 
 2 
 3 /**
 4  * Global variables
 5  */
 6 var history = [ ];
 7 
 8 function start(response, query, clients) {
 9     console.log("Handler 'start' is started.");
10     console.log("Query string is: " + query);
11 }
12 
13 function send(response, query, clients) {
14     console.log("Handler 'send' is started.");
15     console.log("Query string is: " + query);
16 
17     var parsedstring = querystring.parse(query); 
18 
19     var obj = {
20         message: parsedstring.m,
21         username: parsedstring.u,
22         timestamp: (new Date()).getTime()
23     };
24 
25     history.push(obj);
26 
27     //////// DEBUG ////////
28     for (var i = 0; i < history.length; i++) {
29         console.log("["+i+"]: " + history[i].message);
30     }
31 
32     var json = JSON.stringify({ type: 'message', data: obj });
33 
34     // Data push to all clients
35     for (var i = 0; i < clients.length; i++) {
36         clients[i].sendUTF(json);
37     }
38 }
39 
40 exports.start = start;
41 exports.send = send;

第 19 行到第 23 行,將訊息封裝到物件裡,同時也加入使用者名稱,以及時間戳記(Timestamp)。第 32 行將物件字串化,這就是一個標準的 JSON 資枓了。接著,第 35 行到第 37 行,將這筆 JSON 資料,傳送給所有的 WebSocket Client 端。

Tags:

純手工打造說明:技術專欄文章為 Jollen 原創,內容皆為人工撰寫,無 AI 生成。轉載請註明出處與作者,並全文引用。轉載時請在文章開頭或結尾明顯處註明「本文出處:https://www.jollen.org,已取得原作者同意並授權使用。」
訂閱電子報:不定期 Jollen's Blog 精選文章隨 Moko365 電子報寄送;請透過 Moko365 電子報訂閱(可隨時取消)。

Copyright(c) 2001–2014 www.jollen.org. All rights reserved.
Last update: 2026-07-22