VirtualBox 安裝 macOS Mojave
二、八、十與十六進位 (數字系統) 轉換教學
PHP 單檔案上傳、多檔案上傳教學範例
Eclipse 下載安裝與使用教學 for Java
AJAX JavaScript 與 jQuery 教學範例 for PHP
Laravel 12 指令程式及自動排程設置指南 for AlmaLinux OS
Vite + Vue3 (route + pinia) 安裝教學
AlmaLinux OS 9 yum/dnf 安裝 PHP 指定或最新版本
Linux Shell script 目錄名稱為日期,自動刪除指定日期點前的目錄 Log
Linux Shell script 檢查磁碟空間並自動寄發 Email 郵件通知警告
// 使用第二個參數 function 方式,排除 age 特性不被序列為 JSON 字串
console.log(
JSON.stringify(member, function(key, value) {
if (key === "age") return undefined;
return value;
/* 輸出:
{"number":"1020501","name":"小傑","sex":"M","interest":["網頁設計","撰寫文章"]}
// 使用第二個參數 array 方式,指定要被序列為 JSON 字串的特性
console.log(
JSON.stringify(member, ["number", "name"])
/* 輸出:
{"number":"1020501","name":"小傑"}
JSON.stringify()
方法可指定第三個參數,來控制結果字串的縮排間距,並會自動換行:
-
如果是一個【數值】則代表有多少空格 (上限 10、小於 1 則沒有空格)。
-
如果是一個【字串】則該字串將被作為空格。
// JavaScript 物件
var member = {
"number": "1020501",
"name": "小傑",
"age": 32,
"sex": "M",
"interest": [
"網頁設計",
"撰寫文章"
// 使用第三個參數【數值】方式指定縮排
console.log(
JSON.stringify(member, null, 2)
/* 輸出:
"number": "1020501",
"name": "小傑",
"age": 32,
"sex": "M",
"interest": [
"網頁設計",
"撰寫文章"
// 使用第三個參數【字串】方式指定縮排
console.log(
JSON.stringify(member, null, "t")
/* 輸出:
t"number": "1020501",
t"name": "小傑",
t"age": 32,
t"sex": "M",
t"interest": [
tt"網頁設計",
tt"撰寫文章"
JSON 字串解析成 JavaScript 物件
JSON.parse() 方法
JSON.parse()
方法可以將 JSON 字串解析成 JavaScript 物件,這樣就可使用 JavaScript 進行操作了:
// 宣告字串須使用 '' 括起來,否則就會變成是 JavaScript object 了
// 如在不同行必須在每行結尾處加上 \,否則會產生 SyntaxError
var jsonString = '{ \
"number": "1020501", \
"name": "小傑", \
"age": 32, \
"sex": "M", \
"interest": [ \
"網頁設計", \
"撰寫文章" \
// 將 JSON 字串解析成 JavaScript 值,這樣就可使用 JavaScript 進行操作了
var member = JSON.parse(jsonString);
// 取得物件的指定值
console.log(
member.name + ', ' +
member.interest[0]
/* 輸出:
小傑, 網頁設計
JSON.parse()
方法可指定第二個參數 function 用來轉換解析出的屬性值,return 的值決定最後在物件上的特性值;若 return 的值為 undefined
,就不會包括該特性:
一些較舊的瀏覽器內建如果沒有支援 JSON 方法,可至
JSON 官方網站點擊 JSON2.js 下載後載入至文件使用,以獲得 JSON 支援。
// 宣告字串須使用 '' 括起來,否則就會變成是 JavaScript Object 了
// 如在不同行必須在每行結尾處加上 \,否則會產生 SyntaxError
var jsonString = '{ \
"number": "1020501", \
"name": "小傑", \
"age": 32, \
"sex": "M", \
"interest": [ \
"網頁設計", \
"撰寫文章" \
// 使用第二個參數 function 方式,排除 age 特性不被包括在物件
var member = JSON.parse(jsonString, function(key, value) {
if (key === "age") return undefined;
return value;
// 取得物件
console.log(member);
/* 輸出:
Object {number: "1020501", name: "小傑", sex: "M", interest: ["網頁設計", "撰寫文章"]}
eval() 函式
eval()
函式可以將一個 JavaScript 代碼字串求值成特定的物件。字串前後須加上刮號 eval("(" + string + ")")
,用來告知 Javascript 這是個物件描述,而不是要執行的 statement:
eval()
函式可執行字串中的 Javascript 程式碼,所以容易有
XSS 攻擊的危險,因此較不建議使用 。
eval()
函式可相容較舊版本的瀏覽器。
// 宣告字串須使用 '' 括起來,否則就會變成是 JavaScript object 了
// 如在不同行必須在每行結尾處加上 \ 告知這是接續下一行,否則會產生 SyntaxError
var jsonString = '{ \
"number": "1020501", \
"name": "小傑", \
"age": 32, \
"sex": "M", \
"interest": [ \
"網頁設計", \
"撰寫文章" \
// 使用 eval() 將字串求值成特定的物件 (字串前後須加上刮號,用來告知這不是要執行的 statement),這樣就可使用 JavaScript 進行操作了
var member = eval("(" + jsonString + ")");
// 取得物件的指定值
console.log(
member.name + ', ' +
member.interest[0]
/* 輸出:
小傑, 網頁設計
走訪 (遍歷) JavaScript object 和 array
個別使用 JavaScript for()
與 jQuery each()
兩種方式,在走訪(遍歷)時,將資料帶入 HTML table (表格)。
使用 JavaScript for()
HTML:
<table class="for-table" border="1">
<thead>
<th>姓名</th>
<th>年齡</th>
</thead>
<tbody></tbody>
</table>
JavaScript:
var json = [{ "name": "小傑", "age": 32 },
{ "name": "小明", "age": 28 }];
var forTable = document.querySelector('.for-table tbody');
for (var i = 0, len = json.length; i < len; i++) {
forTable.innerHTML +=
'<tr>' +
'<td>' + json[i].name + '</td>' +
'<td>' + json[i].age + '</td>' +
'</tr>';
var json = [{ "name": "小傑", "age": 32 },
{ "name": "小明", "age": 28 }];
var eachTable = $('.each-table tbody');
$.each(json, function(index, element) {
eachTable.append(
'<tr>' +
'<td>' + element.name + '</td>' +
'<td>' + element.age + '</td>' +
'</tr>');
"booktitle": "The Merchant of Venice",
"bookid": "37364",
"bookauthor": "William Shakespeare"
PS D:WorkspaceExcel2JsonTestexcel-to-json-in-Node.js> node app.js
running on 3000...
uploadsfile-1513237256061.xlsx
"booktitle": "Leading",
"bookid": "56353",
"bookauthor": "Sir Alex Ferguson"
"booktitle": "How Google Works",
"bookid": "73638",
"bookauthor": "Eric Smith"
"booktitle": "The Merchant of Venice",
"bookid": "37364",
"bookauthor": "William Shakespeare"
但是要在網頁頁面呈現時,用相同的方卻無法換行,得到的結果如下
"[n {n "booktitle": "Leading",n "bookid": "56353",n "bookauthor": "Sir Alex Ferguson"n },n {n "booktitle": "How Google Works",n "bookid": "73638",n "bookauthor": "Eric Smith"n },n {n "booktitle": "The Merchant of Venice",n "bookid": "37364",n "bookauthor": "William Shakespeare"n }n]"
請問造成上述結果的原因為何?
1. 因為換行就是以符號 n 表示,不用特別換行。
2. 盡量別自行串接 JSON、XML 等等資料交換格式,建議使用程式預設提供的函數,如 PHP 就有提供 json_encode() 與 json_decode() 將陣列編、解碼成 JSON,方便又能減少出錯率。
你最后的JSON格式好像有问题?
JSON虽然非常好用,但是也有一个缺点,就是比较长的时候格式容易出错而且不好排查,出现了问题可以先看看JSON本身的格式是不是出现了问题
你可以用一些在线工具排查 https://www.jsonformatting.com/