Javascript-JSON
4249 ワード
一、文法
JSONの文法は以下の3つのタイプの値を表すことができます.単純値:JavaScriptと同じ文法を使用して、JSONに文字列、数値、ブール値、nullを表すことができます.しかし、JSONはJavaScriptの特殊値undefinedをサポートしていません. オブジェクト:オブジェクトは複雑なデータタイプとして、無秩序なキーペアのセットを表しています.各キーのペアの中の値は単純な値でもいいし、複雑なデータタイプの値でもいいです. 配列:配列は複雑なデータタイプであり、順序正しい値のセットを表すリストであり、数値インデックスによってその値にアクセスすることができる.配列の値は任意の種類であっても良いです.単純な値、オブジェクト、または配列です. 1、単純値
JSONは文字列の方式を表します.
JSONの対象とJavaScriptの字面量は少し違っています.以下はJavaScriptの対象文字の量です.
3、配列
JSON配列はJavaScriptの配列字面量の形式を採用しています.
二、解析と序列化
1、JavaScriptオブジェクトをJSON文字列に並べ替えるフィルタ結果 2番目のパラメータが配列である場合、すなわちフィルタパラメータが配列である場合、JSON.strigify()の結果には配列内の属性のみが含まれます.第二のパラメータが関数である場合 文字列は、JSON.strigify()方法の第3のパラメータをインデントと空白文字列にインデントし、このパラメータが数値であれば、各レベルのインデントされたスペース数 を表します. toJSON
JSON文字列をJavascriptオブジェクトに解析する
JSONの文法は以下の3つのタイプの値を表すことができます.
JSONは文字列の方式を表します.
"Tom"
2、オブジェクトJSONの対象とJavaScriptの字面量は少し違っています.以下はJavaScriptの対象文字の量です.
var person = {
name:"Tom",
age:26
};
JSONのオブジェクト://JSON
{
"name":"Tom",
"age":26
}
JSONのオブジェクトはJSのオブジェクトと比較して以下の3つの違いがあります.3、オブジェクトの属性には、二重引用符が必要です.3、配列
JSON配列はJavaScriptの配列字面量の形式を採用しています.
var values = [24, "hi", true];
JSONの配列:// JSON
[23, "hi", true]
同様に、JSON配列にも変数やセミコロンがありません.二、解析と序列化
1、JavaScriptオブジェクトをJSON文字列に並べ替える
var book = {
title:"Professional JavaScript",
authors:["Tom"],
edition:5,
year:2015
};
var jsonText = JSON.stringify(book);
JSON.stringify(object[, replacer][, space])
この方法は、3つのパラメータのうちの1つ目のパラメータが受信対象であり、2番目のパラメータがフィルタであり、1つの配列であっても良いし、1つの関数であっても良い.3番目のパラメータはJSON文字列にインデントを保持するかどうかを示すオプションです.var book = {
title:"Professional JavaScript",
authors:["Tom"],
edition:5,
year:2015
};
var jsonText = JSON.stringify(book,["title","year"]);
console.log(jsonText); //{"title":"Professional JavaScript","year":2015}
var book = {
title:"Professional JavaScript",
authors:["Tom","Jerry"],
edition:5,
year:2015
};
var jsonText = JSON.stringify(book,function(key,value){
switch(key){
case "authors":
return value.join(",")
case "year":
return 5000;
case "edition":
return undefined;
default:
return value;
}
});
console.log(jsonText); //{"title":"Professional JavaScript","authors":"Tom,Jerry","year":5000}
var book = {
"title":"Professional JavaScript",
"authors":["Tom"],
edition:5,
year:2015
};
var jsonText = JSON.stringify(book, null, 4);
console.log(jsonText);
{
"title": "Professional JavaScript",
"authors": [
"Tom"
],
"edition": 5,
"year": 2015
}
var book = {
"title":"Professional JavaScript",
"authors":["Tom"],
edition:5,
year:2015,
toJSON:function(){
return this.title;
}
};
var jsonText = JSON.stringify(book);
console.log(jsonText); //"Professional JavaScript"
トップクラスのオブジェクトです.結果はundefinedです.toJSON()は関数フィルタの補足として利用できるので,逐次化の内部秩序を理解することが重要である.一つのオブジェクトをJSON.strigifyに導入すると仮定し、そのオブジェクトの順序は以下の通りである.(1)toJSON()法があり、かつ有効な値を得ることができる場合は、この方法を呼び出す.さもないと、オブジェクト自体に戻ります.(2)2番目のパラメータが提供される場合は、この関数フィルタを適用します.着信関数フィルタの値は、(1)ステップ目の値です.(3)ステップ(2)で返した各値に対して、対応する順序付けを行う.(4)第3のパラメータが提供された場合、対応するフォーマットが実行されます.JSON文字列をJavascriptオブジェクトに解析する
JSON.parse()
var book = {
"title":"Professional JavaScript",
"authors":["Tom","Jerry"],
edition:5,
year:2015,
releaseDate:new Date(2011,11,1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText,
function(key, value){
if(key == "releaseDate"){
return new Date(value);
}else{
return value;
}
});
alert(bookCopy.releaseDate.getFullYear()); //2011