Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
SON對象是什么?
JSON代表JavaScript對象表示法,是一種基于JavaScript對象語法的結構化數據的標準文本格式。JSON僅定義了兩種數據結構:對象和數組。JSON對象是由花括號括起來的鍵/值對組成的數據類型。JSON數組是值的列表。當數據從服務器發送到網頁或在文件或數據庫中存儲數據時,通常會使用JSON對象。JSON與JavaScript對象文字語法非常相似,但可以獨立于JavaScript使用。許多編程環境支持讀取和生成JSON。
JSON對象的特點
JSON提供了幾個優點,使其成為表示結構化數據的熱門選擇:
JSON對象示例
基本JSON對象:{"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null} |
嵌套JSON對象:這是一種由名稱/值對列表組成的數據類型,其中一個或多個值是另一個JSON對象。{"person": {"name": "Natalie", "age": 21}, "address": {"street": "123 XYZ Street", "City": "New York", "State" : "NY", "zip": "10001"}} |
JSON對象數組:[ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ] |
解析JSON對象
解析是將JSON對象轉換為本機JavaScript對象的方法。
JSON.parse()方法:JSON.parse()方法解析字符串并返回一個JavaScript對象。字符串必須是JSON格式。
語法:JSON.parse(string, function)
參數 | 必需/可選 | 描述 |
字符串 | 必需 | 以JSON格式編寫的字符串 |
Reviver函數 | 可選 | 一個接受鍵和值作為參數并返回修改后的值或undefined以刪除屬性的函數。對每個項目調用該函數。任何嵌套對象在父對象之前轉換。 |
示例
var text='{"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null}';
var obj=JSON.parse(text, function (key, value) {
if (key==="name") {
return value.toUpperCase();
} else {
return value;
}
});
console.log(obj);
輸出
{
name: 'NATALIE',
married: false,
age: 21,
city: 'New York',
zip: '10001',
awards: null
}
JSON.stringify()方法
該方法將JavaScript對象轉換為字符串。在將數據發送到Web服務器時,數據必須是字符串。JSON.stringify()也適用于數組。
語法:JSON.stringify(obj, replacer, space)
參數 | 必需/可選 | 描述 |
Obj | 必需 | 要轉換為字符串的值 |
Replacer | 可選 | 用于轉換結果的函數或數組。對每個項目調用replacer。 |
Space | 可選 | 用作空格的字符串(最多10個字符)或數字,從0到10,表示要用作空格的空格字符數。 |
示例
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
var text=JSON.stringify(obj, function (key, value) {
if (key==="name") {
return value.toUpperCase();
} else {
return value;
}
});
console.log(text);
輸出
{"name":"NATALIE","married":false,"age":21,"city":"New York","zip":"10001","awards":null}
/*為每個空格插入單詞SPACE:*/
var newText=JSON.stringify(obj, null, "space");
console.log(“Text with the word space “+ newText);
輸出
Text with the word space {
space"name": "Natalie",
space"married": false,
space"age": 21,
space"city": "New York",
space"zip": "10001",
space"awards": null
}
JSON對象導航
可以使用點(.)或方括號([])表示法導航到其屬性并訪問它們的值。
// 使用點表示法訪問名稱
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
console.log(obj.name); 輸出:Natalie
// 使用點表示法訪問城市
console.log(obj["city"]; 輸出:New York
var obj_array=[ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ]
// 使用點和方括號表示法訪問第一個成員的名稱
console.log(obj_array[0].name); 輸出:Natalie
// 使用點和方括號表示法訪問第二個成員的年齡
console.log(obj_array[1][ "age"]); 輸出:37
Object.keys()方法
keys()方法返回給定對象的自身可枚舉字符串鍵屬性的數組。作為靜態方法的keys()方法使用Object類名調用。
語法:Object.keys(obj)
參數 | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對象 |
Object.values()方法
values()方法返回給定對象的自身可枚舉字符串鍵屬性值的數組。作為靜態方法的values()方法使用Object類名調用。
語法:Object.values(obj)
參數 | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對象 |
Object.entries()方法
該方法返回對象的可枚舉屬性的鍵值對數組。作為靜態方法的entries()方法使用Object類名調用。
語法:Object.entries(obj)
參數 | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對象 |
示例
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
var keys=Object.keys(obj);
var values=Object.values(obj);
var entries=Object.entries(obj);
console.log("Array of keys :");
console.log(keys);
console.log("Array of values :");
console.log(values);
console.log("Array of entries :");
console.log(entries);
輸出
Array of keys :
[ 'name', 'married', 'age', 'city', 'zip', 'awards' ]
Array of values :
[ 'Natalie', false, 21, 'New York', '10001', null ]
Array of entries :
[
[ 'name', 'Natalie' ],
[ 'married', false ],
[ 'age', 21 ],
[ 'city', 'New York' ],
[ 'zip', '10001' ],
[ 'awards', null ]
]
for循環
for循環重復執行,直到指定的條件評估為false。
語法:for (初始化; 條件; 表達式) {要執行的代碼塊}
參數 | 必需/可選 | 描述 |
初始化 | 必需 | 在執行代碼塊之前執行一次 |
條件 | 必需 | 執行代碼塊的條件 |
表達式 | 必需 | 在執行代碼塊后每次執行 |
示例
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
for(var i=0; i<obj.length; i++) {
console.log("Name: " + obj[i]["name"]); //使用方括號表示法
console.log("Married Status: " + obj[i].married); //使用點表示法
}
輸出
輸出
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
for…in循環
for...in語句遍歷對象的所有可枚舉字符串非符號屬性,包括繼承的可枚舉屬性。循環內部的代碼塊對每個屬性執行一次。
語法:for (item in object) {要執行的代碼塊}
參數 | 必需/可選 | 描述 |
item | 必需 | 用于迭代屬性的變量 |
object | 必需 | 要迭代的對象 |
示例
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
for(item in obj) {
console.log("Name: " + obj[item]["name"]); //使用方括號表示法
console.log("Married Status: " + obj[item].married); //使用點表示法
}
輸出
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
for…of循環
for..of循環按順序操作來自可迭代對象的值。
語法:array.forEach(iterable object) {statement}
參數 | 必需/可選 | 描述 |
Variable | 必需 | 對于每次迭代,下一個屬性的值被賦給變量。變量可以使用const、let或var聲明。 |
Iterable object | 必需 | 循環操作的值來源。 |
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
## `forEach()`**方法**
`forEach()`方法對數組中的每個元素調用一個函數。它必須至少接受一個參數,該參數表示數組的元素。
*語法:*`array.forEach(function(currentValue, index, array), thisValue)`
| | | |
| --- | --- | --- |
| **參數** | **必需/可選** | **描述** |
| Function | 必需 | 用于對數組每個元素運行的函數 |
| currentvalue | 必需 | 當前元素的值 |
| index | 可選 | 當前元素的索引 |
| Array | 可選 | 當前元素的數組 |
| Thisvalue | 可選 | 作為this值傳遞給函數的值。默認為undefined。 |
### 示例
```json
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
obj.forEach((item, index, arr)=> {
console.log("元素詳情: " +index);
console.log("姓名: "+arr[index]["name"]);
console.log("年齡: "+item.age);
});
元素詳情: 0
姓名: Natalie
年齡: 21
元素詳情: 1
姓名: David
年齡: 37
元素詳情: 2
姓名: Mark
年齡: 43
JSON通常用于在服務器和Web應用程序之間傳輸數據。JSON的靈活性、易解析性和簡單性使軟件開發人員能夠在各種編程環境中高效地處理結構化數據。
SON對象是什么?
JSON代表JavaScript對象表示法,是一種基于JavaScript對象語法的結構化數據的標準文本格式。JSON僅定義了兩種數據結構:對象和數組。JSON對象是由花括號括起來的鍵/值對組成的數據類型。JSON數組是值的列表。當數據從服務器發送到網頁或數據存儲在文件或數據庫中時,通常會使用JSON對象。JSON與JavaScript對象文字語法非常相似,但可以獨立于JavaScript使用。許多編程環境支持讀取和生成JSON。
JSON對象的特點
JSON提供了幾個優點,使其成為表示結構化數據的流行選擇:
JSON對象示例
基本JSON對象:{"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null} |
嵌套JSON對象:這是一種由名稱/值對列表組成的數據類型,其中一個或多個值是另一個JSON對象。{"person": {"name": "Natalie", "age": 21}, "address": {"street": "123 XYZ Street", "City": "New York", "State" : "NY", "zip": "10001"}} |
JSON對象數組:[ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ] |
解析JSON對象
解析是將JSON對象轉換為本機JavaScript對象的方法。
JSON.parse()方法:JSON.parse()方法解析字符串并返回一個JavaScript對象。字符串必須是JSON格式。
語法:JSON.parse(string, function)
參數 | 必需/可選 | 描述 |
字符串 | 必需 | 以JSON格式編寫的字符串 |
Reviver函數 | 可選 | 一個接受鍵和值作為參數并返回修改后的值或undefined以刪除屬性的函數。對每個項目調用該函數。任何嵌套對象在父對象之前轉換。 |
示例
var text='{"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null}';
var obj=JSON.parse(text, function (key, value) {
if (key==="name") {
return value.toUpperCase();
} else {
return value;
}
});
console.log(obj);
輸出
{
name: 'NATALIE',
married: false,
age: 21,
city: 'New York',
zip: '10001',
awards: null
}
JSON.stringify()方法
該方法將JavaScript對象轉換為字符串。在將數據發送到Web服務器時,數據必須是字符串。JSON.stringify()也適用于數組。
語法:JSON.stringify(obj, replacer, space)
參數 | 必需/可選 | 描述 |
Obj | 必需 | 要轉換為字符串的值 |
Replacer | 可選 | 用于轉換結果的函數或數組。對每個項目調用replacer。 |
Space | 可選 | 用作空格的字符串(最多10個字符)或數字,從0到10,表示要用作空格的空格字符數。 |
示例
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
var text=JSON.stringify(obj, function (key, value) {
if (key==="name") {
return value.toUpperCase();
} else {
return value;
}
});
console.log(text);
輸出
{"name":"NATALIE","married":false,"age":21,"city":"New York","zip":"10001","awards":null}
/*為每個空格插入單詞SPACE:*/
var newText=JSON.stringify(obj, null, "space");
console.log(“Text with the word space “+ newText);
輸出
Text with the word space {
space"name": "Natalie",
space"married": false,
space"age": 21,
space"city": "New York",
space"zip": "10001",
space"awards": null
}
JSON對象導航
可以使用點(.)或方括號([])表示法導航到其屬性并訪問它們的值。
// 使用點表示法訪問名稱
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
console.log(obj.name); 輸出:Natalie
// 使用點表示法訪問城市
console.log(obj["city"]; 輸出:New York
var obj_array=[ { "name": "Natalie", "age": 21 }, { "name": "David", "age": 37 }, { "name": "Mark", "age": 43 } ]
// 使用點和方括號表示法訪問第一個成員的名稱
console.log(obj_array[0].name); 輸出:Natalie
// 使用點和方括號表示法訪問第二個成員的年齡
console.log(obj_array[1][ "age"]); 輸出:37
Object.keys()方法
keys()方法返回給定對象的自身可枚舉字符串鍵屬性的數組。作為靜態方法的keys()方法使用Object類名調用。
語法:Object.keys(obj)
參數 | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對象 |
Object.values()方法
values()方法返回給定對象的自身可枚舉字符串鍵屬性值的數組。作為靜態方法的values()方法使用Object類名調用。
語法:Object.values(obj)
參數 | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對象 |
Object.entries()方法
該方法返回對象的可枚舉屬性的鍵值對數組。作為靜態方法的entries()方法使用Object類名調用。
語法:Object.entries(obj)
參數 | 必需/可選 | 描述 |
obj | 必需 | 要返回其可枚舉屬性的對象 |
示例
var obj={"name": "Natalie", "married": false, "age": 21, "city": "New York", "zip" : "10001", "awards": null};
var keys=Object.keys(obj);
var values=Object.values(obj);
var entries=Object.entries(obj);
console.log("Array of keys :");
console.log(keys);
console.log("Array of values :");
console.log(values);
console.log("Array of entries :");
console.log(entries);
輸出
Array of keys :
[ 'name', 'married', 'age', 'city', 'zip', 'awards' ]
Array of values :
[ 'Natalie', false, 21, 'New York', '10001', null ]
Array of entries :
[
[ 'name', 'Natalie' ],
[ 'married', false ],
[ 'age', 21 ],
[ 'city', 'New York' ],
[ 'zip', '10001' ],
[ 'awards', null ]
]
for循環
for循環重復執行,直到指定的條件評估為false。
語法:for (初始化; 條件; 表達式) {要執行的代碼塊}
參數 | 必需/可選 | 描述 |
初始化 | 必需 | 在執行代碼塊之前執行一次 |
條件 | 必需 | 執行代碼塊的條件 |
表達式 | 必需 | 在執行代碼塊后每次執行 |
示例
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
for(var i=0; i<obj.length; i++) {
console.log("Name: " + obj[i]["name"]); //使用方括號表示法
console.log("Married Status: " + obj[i].married); //使用點表示法
}
輸出
輸出
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
for…in循環
for...in語句遍歷對象的所有可枚舉字符串非符號屬性,包括繼承的可枚舉屬性。循環內的代碼塊對每個屬性執行一次。
語法:for (item in object) {要執行的代碼塊}
參數 | 必需/可選 | 描述 |
item | 必需 | 用于遍歷屬性的變量 |
object | 必需 | 要遍歷的對象 |
示例
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
for(item in obj) {
console.log("Name: " + obj[item]["name"]); //使用方括號表示法
console.log("Married Status: " + obj[item].married); //使用點表示法
}
輸出
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
for…of循環
for..of循環按順序操作來自可迭代對象的值。
語法:array.forEach(iterable object中的變量) {語句}
參數 | 必需/可選 | 描述 |
變量 | 必需 | 對于每次迭代,下一個屬性的值被賦給變量。變量可以使用const、let或var聲明。 |
可迭代對象 | 必需 | 循環操作的值的來源。 |
Name: Natalie
Married Status: true
Name: David
Married Status: false
Name: Mark
Married Status: true
## `forEach()`**方法**
`forEach()`方法對數組中的每個元素調用一個函數。它必須至少接受一個參數,該參數表示數組的元素。
*語法:*`array.forEach(function(currentValue, index, array), thisValue)`
| | | |
| --- | --- | --- |
| **參數** | **必需/可選** | **描述** |
| Function | 必需 | 用于對數組每個元素運行的函數 |
| currentvalue | 必需 | 當前元素的值 |
| index | 可選 | 當前元素的索引 |
| Array | 可選 | 當前元素的數組 |
| Thisvalue | 可選 | 作為this值傳遞給函數的值。默認為undefined。 |
### 示例
```json
var obj=[ { "name": "Natalie", "age": 21, "married": true }, { "name": "David", "age": 37, "married": false }, { "name": "Mark", "age": 43, "married": true } ];
obj.forEach((item, index, arr)=> {
console.log("元素詳情: " +index);
console.log("姓名: "+arr[index]["name"]);
console.log("年齡: "+item.age);
});
元素詳情: 0
姓名: Natalie
年齡: 21
元素詳情: 1
姓名: David
年齡: 37
元素詳情: 2
姓名: Mark
年齡: 43
JSON通常用于服務器和Web應用程序之間傳輸數據。JSON的靈活性、易解析性和簡單性使軟件開發人員能夠在各種編程環境中高效地處理結構化數據。
ypeScript編程實踐
一、JSON簡介
基本概念:JavaScript對象簡譜(JSON, JavaScript Object Notation)是一種輕量級的數據交換格式。JSON是基于ECMAScript的一個子集,以完全獨立于編程語言的文本格式來存儲和表示數據的。
簡單概念:JSON是用于存儲和傳輸數據的格式。
形式:文件(.json)或字符串
二、JSON語法
JSON是一個標記符的序列,包含六個構造字符([ ] { } : ,)、字符串、數字和三個字面名(true false null)。
JSON是一個序列化的對象或數組。
// 用JSON來表示兩本書
[{
"title": "JavaScript高級程序設計",
"author": "Matt Frisbie",
"price": 129.00,
"count": 100,
"ebook": false
}, {
"title": "JavaScript權威指南",
"author": "David Flanagan",
"price": 139.00,
"count": 88,
"ebook": true
}]
// [] 表示數組
// {} 表示對象
// key: value 鍵值對
三、JSON和TypeScript(JavaScript)
/* JavaScript對象 */
let obj={ "name": "熱巴", "age": 18, "gender": "female" }
/* JavaScript字符串,JSON字符串 */
let json='{ "name": "熱巴", "age": 18, "gender": "female" }'
/* JSON字符串轉JavaScript對象 */
let obj=JSON.parse(json)
/* JavaScript對象轉JSON字符串 */
let json=JSON.stringify(obj)
當你想在你的代碼中找到一個錯誤時,這很難;當你認為你的代碼是不會有錯誤時,這就更難了。—Steve McConnell 《代碼大全》
*請認真填寫需求信息,我們會在24小時內與您取得聯系。