あなたが知らないJSON.strigifyの知識点

2945 ワード

1.定義stringify関数の定義:JSON.stringify(value [, replacer [, space]])パラメータ:
  • value:JSON文字列のjavascriptオブジェクトに変換します.
  • replacer:このパラメータは様々なタイプであってもよく、関数であれば、Javascriptオブジェクトの文字列化過程における挙動を変えることができ、StringおよびNumberオブジェクトを含む配列であれば、ホワイトリストとして、これらのキーだけがドメインのホワイトリストのキーペアに含まれます.最終的に生成されたJSON文字列に含まれます.このパラメータ値がnullまたは省略されると、すべてのキーペアは最終的に生成されたJSON文字列に含まれます.
  • space:このパラメータは、出力されたJSON文字列に空白文字を挿入して読み取り可能性を高めるために、StringまたはNumberオブジェクトとすることができます.Numberオブジェクトであれば、空白文字としていくつかのスペースを使用することを表します.最大は10であり、10より大きい数値でも10を取ることができます.最小は1であり、1より小さい数値でも無効であれば、空白文字は表示されません.Stringオブジェクトであれば、文字列自体が空白文字となり、文字列が最長で10文字となり、それを超えると10文字前の文字が切り取られます.このパラメータが省略されている(またはnull)場合、空白文字は表示されません.
  • は表示されません.
    1.1置換関数は、値をフィルタするために使用できます.
  • は、undefinedに戻ると、この属性を無視する
  • を表しています.
  • は文字列を返します.ブール値または数字はstrigify
  • によって返されます.
  • 戻るオブジェクトは、基本タイプの属性
  • に出会うことを知っている再帰的呼び出しをトリガする.
  • 戻りますが、ストリングスフリーの値は無視されます.
    let user = {
      age: 18,
      name: 'tom',
      email: '[email protected]'
    };
     
    function replacer(key, value) {
      if (key === 'email') {
        return undefined;
      }
      return value;
    }
     
    let str = JSON.stringify(user, replacer);
    // "{"age":18,"name":"tom"}"
    //        
    let data = [
         {name: "tom", sex:1, age: 18},
         {name: "jerry", sex:0, age: 17},
         {name: "mike", test: {age: 15}} //             
     ];
    
    let str = JSON.stringify(data, ["name","age"]);
    console.log(str);
    //[{"name":"tom","sex":1},{"name":"jerry","sex":0},{"name":"mike"}]
    
    //     
    let str2 = JSON.stringify(data, function(key, val){
        if(key === 'sex'){
            return [' ', ' '][val]
        }
        return val
    })
    console.log(str2);
    // [{"name":"tom","sex":" ","age":18},{"name":"jerry","sex":" ","age":17}]
    1.2 JSON.stringify()を使ってオブジェクトの順序付けをする
  • undefined値、関数またはXML値は無視されます.
  • あなたの配列にundefined値、関数またはXML値が含まれていると、これらの値はnull
  • として扱われます.
  • 属性がnullであれば、この属性は正常に順列化されてもよい(nullは、与えられた値を表してもよいので、undefinedは未定義、未割り当てを表しているので、JSON.stringifyは処理されない)
  • .
  • いくつかの属性は、stringify(SONは汎用的なテキストフォーマットであり、言語とは関係がない.関数を定義してもstingifyとすると、どの言語かをどう判断し、適切な方法で表現すると複雑になる.特に、JavaScriptのSymbolなど、言語に関連するいくつかの特性.)
  • let data = {
      name: 'tom',
      age: undefined,
      sex: null,
      fn: function() {
        return true
      }
    }
    JSON.stringify(data)
    // {"name":"tom","sex":null}
    
    //     ,    stringify      null   
    let arr = [Symbol(), undefined, function() {}, "tom"];
    JSON.stringify(arr);
    // "[null,null,null,'tom']"
    注意
  • はすべての合法的なJSONではなく、有効なJavaScript
  • です.
  • JSONはテキスト形式だけです.
  • JSONの数字は10進数
  • です.