JSON.stringify(),JSON.parse(),toJSON()メソッド使用-20 chapter
3978 ワード
メモ JSON.stringify()は、value(Object,Array,String,Number...)をJSON文字列 にシーケンス化する JSON.parse()は、JSONデータをjs原生値 に解析する toJSON()は、JSON.stringifyの2番目のパラメータ(関数フィルタ)として を補完する
サポートIE 8+,FF 3.5+,safari 4+,opera 10.5+,chrome
実行原理:
/* * toJSON()はJSON.stringifyの2番目のパラメータ(関数フィルタ)として補完し,内部順序を理解することが重要である. * JSON.stringify()シーケンス化されたオブジェクトに1つのオブジェクトを渡す順序は次のようになります. * * (1)toJSON()メソッドが存在し、それによって有効な値を取得できる場合は、このメソッドを呼び出す.そうでなければ、デフォルトの順序でシーケンス化を実行します. * (2)2番目のパラメータが指定されている場合、この関数フィルタを適用すると、入力された関数フィルタの値は(1)ステップで返される値である. * (3)(2)ステップで返される各値を対応するシーケンス化する. * (4)3番目のパラメータが指定されている場合、対応するフォーマット操作を実行する. */
自分で書いたノートも、論理が正しいかどうかはわかりませんが…言葉の表現力、コミュニケーション力は次第に劣化していきます.
だからメモはよく書かなければなりません.
mark:『高程三』20章読書記録.
サポートIE 8+,FF 3.5+,safari 4+,opera 10.5+,chrome
/*
* ===================ECMAscript5 JSON=====================
* Json: 。 js syntax 、 、 、 、 、 null
* Note:ECMAScript5 JSON ,
JSON (JSON.stringify()),
JSON js (JSON.parse())。
* support: IE8+,FF3.5+,safari4+,opera10.5+,chrome
* IE6,7 : https://github.com/douglascrockford/JSON-js
*/
/*
* JSON.stringify()
* @specify : serialization( )
* @method : JSON.stringify(value,filter,indent);
* @return : JSON
* @param : value {type : String|Object|String|Number|Boolean|null} {explain : }
* @param : filter : {type : []|{}} {explain : , }
* @param : indent : {type : Number | } {explain : , 10 ; }
*/
var gather = {
id : 1314,
name : 'pom',
infor : {
age : 20,
sex : 'man',
marry : false,
identity : 622421,
habit : [' ',' ',' ',' ',true]
},
family : [' ',' ',' '],
likeGames : ['PCgame','Netgame']
};
var jsonText = JSON.stringify(gather,null,4);
// ,
var jsonText1 = JSON.stringify(gather,['id','family'],'=');
var jsonText2 = JSON.stringify(gather,function(key,val){
switch(key){
case 'id' :
return 'id is ' + val;
case 'family' :
return val.join('@');
case 'infor' :
//infor val JSON.stringify()
//return JSON.stringify(val,["age","sex"]);
return Object.prototype.toString.call(val).slice(8, -1);
case 'likeGames' :
// undefined
return undefined;
// default, 。
default :
return val;
}
},10);
// console.log(jsonText);
// console.log(jsonText1);
// console.log(jsonText2)
/*
* toJSON()
* @specify : JSON.stringify() , toJSON()
* @method : date.toJSON()
* @return : 。
*
* JSON.parse() ,eval() js 。 IE8 。
* @specify : json javascript 。
* @method : JSON.parse(val,replacer)
* @param : val{type : String} {explain : json }
* @param : replacer {type : function}
{explain : JSON.stringify() , 2 ,key,val, json }
*/
var products = {
name : "leading",
"time" : new Date(2012,03,1),
toJSON : function(){
// name
return this.name;
}
}
var proStr = JSON.stringify(products);
console.log(proStr);
//obj relaeseDate json
var obj = {
title : ' ',
type : 'primitive' ,
releaseDate : new Date(2012,03,1)
};
// json
var o = JSON.stringify(obj);
console.log(o);
// parsedO Date ( Date , parsedO.releaseDate Date )
var parsedO = JSON.parse(o,function(k,v){
if(k == 'releaseDate'){
return new Date(v);
}else{
return v;
}
});
console.log(parsedO);
// getFullYear()
console.log(parsedO.releaseDate.getFullYear()); //2012
実行原理:
/* * toJSON()はJSON.stringifyの2番目のパラメータ(関数フィルタ)として補完し,内部順序を理解することが重要である. * JSON.stringify()シーケンス化されたオブジェクトに1つのオブジェクトを渡す順序は次のようになります. * * (1)toJSON()メソッドが存在し、それによって有効な値を取得できる場合は、このメソッドを呼び出す.そうでなければ、デフォルトの順序でシーケンス化を実行します. * (2)2番目のパラメータが指定されている場合、この関数フィルタを適用すると、入力された関数フィルタの値は(1)ステップで返される値である. * (3)(2)ステップで返される各値を対応するシーケンス化する. * (4)3番目のパラメータが指定されている場合、対応するフォーマット操作を実行する. */
自分で書いたノートも、論理が正しいかどうかはわかりませんが…言葉の表現力、コミュニケーション力は次第に劣化していきます.
だからメモはよく書かなければなりません.
mark:『高程三』20章読書記録.