『壹』 node js中處理json字元串中含有轉義符號\ ,不能解析成json對象
使用JSON從後台向前台傳輸數據的時候,當數據本身含有一些特殊字元,會導致數據的解析出錯。
使用下面的方法對即將向前台輸出的json字元串進行處理,可以解決鍵盤上能輸入的所有特殊字元問題。
//當文本中含有如下特殊字元時,此方法可以成功處理,讓其在前台被正確解析,注意:此法不能處理單引號
public static String stringToJson(String s) {
StringBuffer sb = new StringBuffer ();
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
// case '\\': //如果不處理單引號,可以釋放此段代碼,若結合下面的方法處理單引號就必須注釋掉該段代碼
// sb.append("\\\\");
// break;
case '/':
sb.append("\\/");
break;
case '\b': //退格
sb.append("\\b");
break;
case '\f': //走紙換頁
sb.append("\\f");
break;
case '\n':
sb.append("\\n"); //換行
break;
case '\r': //回車
sb.append("\\r");
break;
case '\t': //橫向跳格
sb.append("\\t");
break;
default:
sb.append(c);
}}
return sb.toString();
}
//注意,下面的方法是在把你的數據文本接入json數據字元串之前使用,預先對文本做處理後在接入JSON字元串
//處理文本中的單引號 和 斜杠
public static String StringDanYinToJSON(String ors) {
ors = ors == null ? "" : ors;
StringBuffer buffer = new StringBuffer(ors);
int i = 0;
while (i < buffer.length()) {
if (buffer.charAt(i) == '\'' || buffer.charAt(i) == '\\') {
buffer.insert(i, '\\');
i += 2;
} else {
i++;
}
}
return buffer.toString();
}
『貳』 如何用nodejs請求json並生成html內容
伺服器用nodejs寫,創建一個伺服器監聽具體url並用回調函數處理,返回json數據
『叄』 如何使用node.js生成json數據
使用node.js生成json數據代碼如下版:權
varhttp=require('http');
vardata={key:'value',hello:'world'};
varsrv=http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'application/json'});
res.end(JSON.stringify(data));
});
srv.listen(8080,function(){
console.log('listeningonlocalhost:8080');
});
『肆』 NodeJS項目基礎結構簡單介紹
按照常規,去執行npm start
或者在Terminal中手動輸入命令,結果如下:
可以看到是執行了test/package.json文件中的 start 命令,初始packagejson.json文件內容如下:
執行 start ,對應的命令為 node ./bin/www 並在命令行執行。現在項目已經啟動成功了,可以打開瀏覽器輸入 localhost:3000 查看一下,但是本次側重點在於項目啟動時候發生的完整的過程。所以……
那麼我們需要看一下 ./bin/www 文件
通過 require() 來引入本地安裝的包,這里載入了三個包 app、debug 、http ,主要關注一下app.js
可以看到app載入的為該項目基礎組件,核心為 var app = express(); 看一下express.js
將app用到的中間件等暴露出來,所以 app = express() 實際上就是載入應用基礎組件,生成項目的根節點(當然這個節點是復合的)。所以在app.js中,進行的是載入應用基礎組件並進行應用設置初始化(包含了視圖目錄設置、頁面模板引擎設置、中間件的設置、靜態資源目錄設置以及錯誤捕捉相關內容)。
繼續回到 www.js ,同樣將debug配置、http相關組件進行載入。繼而是默認埠號的設定。通過http.createServer(app),創建應用服務相關信息,並對埠進行監聽。
瀏覽器輸入 localhost:3000
控制台顯示:
說明在以 GET 方式請求URI為 "/" 的資源,並以 GET 方式請求 /stylesheets/style.css 資源,這個發生在app.js中我們設定的資源請求。
我們來看下 ./routes/index 文件
即定義網站主頁的路由
使用 express.Router 類創建模塊化、可掛載的路由句柄(簡稱:路由模塊)。Router 實例是一個完整的中間件和路由系統。最終,在應用中載入路由模塊app.use('/', indexRouter);
通過 res.render 對視圖進行渲染,上述為對index.ejs的渲染。 ps:在app.js中已經設定了views的所在目錄 。語法: res.render(view [,locals] [,callback])
示例:
區別:路由句柄
為請求處理提供多個回調函數,其行為類似 中間件 。唯一的區別是這些回調函數有可能調用 next('route') 方法跳至下一個同路由的回調函數而略過其他路由回調函數。路由句柄有多種形式,可以是一個函數、一個函數數組,或者是兩者混合。
使用一個回調函數處理路由:
使用多個回調函數處理路由(記得指定 next 對象):
使用回調函數數組處理路由:
混合使用函數和函數數組處理路由:
區別:路由方法
一個路由示例:
路由方法源於 HTTP 請求方法,和 express 實例相關聯。
獲取express的一個實例 app ,通過路由方法(和HTTP請求對應),GET方式請求 "/"。詳細的路由方法參考鏈接: 路由方法
『伍』 JSON,JS,NODEJS三者的關系是怎樣
三者性質完全不一樣
JS是JavaScript語言,是一種解釋性編程語言
JSON是JavaScript Object Notation,意思是JS語言中對象的表達專法,常用於數據傳輸(與屬XML的作用類似),常在AJAX中替代XML
NodeJS是一種服務端平台,可以在服務端運行用JavaScript寫的服務端腳本
注意的是:JS中函數本身就是個對象,所以函數可以作為形參不是NodeJS獨有的,准確的說,NodeJS就是用Chrome瀏覽器的Google V8解釋器來解釋JS
總結來說:
JS是個編程語言
JSON是一種數據格式(沒有邏輯只有數據)
NodeJS是個軟體(JS服務端運行環境)
順帶一提:HTML是XML的派生(HTML是一種XML)但是為了適應其特定作用而有所改變,HTML(XML)與JSON同為數據表達語言,嚴格來講並不包含邏輯只包含數據。