添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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,就不會包括該特性:

// 宣告字串須使用 '' 括起來,否則就會變成是 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:

// 宣告字串須使用 '' 括起來,否則就會變成是 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/