JavaScriptを使用して、JSON(Javaスクリプトオブジェクト表記)は、データを格納および送信するためのフォーマット、典型的には、ページにデータを渡すために使用されるサーバです。JSON形式は、上からテキストのみが、任意のプログラミング言語で読むことができるテキスト、及び伝送データのフォーマット(JSON文字列が、長いオブジェクト等である同様の形式のオブジェクト、にJSの文字列)の通りであります説明は、我々は次のような知識を見ることができます
JSONルール:を有する{}引用符のペアのデータ、または[]囲まれ、キーと値のペア(キー:値)で表現される各データについて、鍵は二重引用符内に配置されなければならなく、単一引用符各データは、カンマで区切られました。
データの後端と対話するためのJS:JSON使用
JSON属性値のみ:10進数値、文字列(二重引用符)、ブール値、ヌル、アレイ、オブジェクトJSONの要求に沿って(含意が関数でない、NaNで、+( - )無限大と不定)。
< スクリプト>
// JSONアレイフォーマット
するvar ARR = [ ' ダヴィナ' 、' エイミー' 、' リサ' ]; // ストア列に配列
にconsole.log(ARR [ 2 ]); // リサ
VAR のARR1 = [ ARR、
{
" 名前" :" dvaina " 、
" 年齢" :18である
}、
{
" 名前":" リサ" 、
" 年齢" :20
}]
はconsole.log(typeof演算ARR1、ARR1 [ 2 ] .nameの)。// オブジェクトリサ
</ スクリプト>
JSONオブジェクトメソッド:()を文字列化と解析()。
JSON形式の文字列にオブジェクトのJSON.stringify()メソッドオブジェクトがキーに引用されていないだけでなく、変換することができる場合は、変換結果が自動的に引用符を与えます。
状況のパラメータ:
< スクリプト>
VAR OBJ1 = [ 1 、2 、3 ]。
VAR OBJ2 = { " 名前" :' dvaina ' 、" 年齢" :' 20 ' }。
VAR OBJ3 = {名:' リサ' 、" 年齢" :' 20 ' }。
console.log(JSON.stringify(OBJ1))。 // [1,2,3]
console.log(JSON.stringify(OBJ2)); // { "名前": "dvaina"、 "年齢" "20は"}
はconsole.log(JSON.stringify(OBJ3)); // { "名前": 「リサ」、「年齢」:「20は」}
// 単語の列に数学的なオブジェクトに変換する文字列化()メソッドは、オブジェクト
にconsole.log(JSON.stringify(数学を)); // {}
はconsole.log(JSON .stringify(新しい新しいブール(真の))); // trueに
// 文字列化()メソッドの変換文字列の日付にオブジェクト
はconsole.log(JSON.stringify(新新A日付())); // 「2019-12-09T06 :22:34.685Z "
// 変換、またはオブジェクトメンバは、未定義の関数メンバである場合は無視する
// アレイのメンバーが定義されていない場合、または関数は、値がNULLに変換され
OBJ4 = {
:関数(){}、
B:不定、
C:[ 関数(){}、不定]
}
にconsole.log(JSON.stringify(OBJ4))。// { "C":[NULL、NULL]}
</ スクリプト>
第2のパラメータは、関数または配列であってもよいです
<script>
//如果第二个参数是函数,序列化过程中的每个属性都会被这个函数转化和处理
var str = {
"name": "davina",
"age": 18,
"phone": 11111111
}
var jsonStr = JSON.stringify(str, function (key, value) {
if (key == "phone") {
return "(0713)" + value;
} else if (typeof value === "age") {
return value + 2;
} else {
return value;
}
})
console.log(jsonStr) //{"name":"davina","age":18,"phone":"(0713)11111111"}
//如果是数组,那只有包含在这个数组中的属性才会被序列化到json字符串中
var str1 = {
"name": "davina",
"age": 18,
"phone": 11111111
}
var jsonStr1=JSON.stringify(str1,["name","age","phone","address"]);
console.log(jsonStr1); //{"name":"davina","age":18,"phone":11111111}
//如果是null,那和空一样
</script>
第三个参数用于美化输出——不建议用,忽略。
JSON.parse()将字符串转化成对象,如果传入的不是有效JSON格式,会报错。JSON.parse()也可以接收一个函数参数,在每个键值对上调用,这个函数被称为还原函数,该函数接收两个参数,一个键和一个值。如果还原函数返回undefined,那就要从结果中删除相应的键,如果返回其它值,则将值插入到结果中。
<script>
console.log(JSON.parse('{}')); //{}
console.log(JSON.parse('true')); //true
var o = JSON.parse('{"name":"davina"}');
console.log(o.name); //dvaina
//JSON.parse()也可以接收一个函数参数,在每一个键值对调用,这个函数被称为还原函数,这个函数接收两个参数,一个键和一个值,返回一个值
var book = {
"name": "js",
"date": new Date(2019, 9, 1)
}
var jsonStr = JSON.stringify(book);
console.log(jsonStr)//{"name":"js","date":"2019-09-30T16:00:00.000Z"}
var bookName = JSON.parse(jsonStr, function (key, value) {
if (key == 'date') {
return new Date(value);
}
return value;
})
console.log(bookName.date.getFullYear());//2019
</script>
eval()类似于JSON.parse()方法,可以将json字符串转换成json对象,但是它也可以执行不符合json格式的代码,所以尽量少用或不用。