JavaScriptのJSONは初めて理解します.

2759 ワード

一、JSON形式のデータはどんな規則に従うべきですか?
JSONフォーマット(JavaScript Object Notationの略語)はデータ交換のためのテキストフォーマットであり、2001年にDuglas Crockfordによって提出され、煩雑で重いXMLフォーマットに代わることを目的としています.
JSONは値の種類と書式に厳しい規定があります.
  • 複合タイプの値は、行列またはオブジェクトだけであり、関数、正規表現オブジェクト、日付オブジェクトではありません.
  • シンプルなタイプの値は4つしかありません.文字列、数値(10進数で表さなければならない)、ブール値、null(NaN、Infinity、-Infinity、undefinedは使用できません.)
  • 文字列は二重引用符を使用しなければなりません.シングルクォーテーションマークは使用できません.
  • オブジェクトのキー名はダブルクォーテーションにしなければなりません.
  • 配列またはオブジェクトの最後のメンバーの後に、カンマを付けてはいけません.
  • なお、空の配列と空のオブジェクトは全て合格のJSON値であり、null自体も合格のJSON値である.
    二、JSONフォーマットデータを処理する二つの方法
    ES 5はJSONオブジェクトを追加し、JSONフォーマットデータを処理します.二つの方法があります.JSON.strigify()とJSON.parse().
    JSON.stringify()
    JSON.strigify方法は、1つの値を文字列に変換するために使用されます.この文字列はJSON形式に適合し、JSON.parse法によって還元される.
    JSON.stringify('abc') // ""abc""
    JSON.stringify(1) // "1"
    JSON.stringify(false) // "false"
    JSON.stringify([]) // "[]"
    JSON.stringify({}) // "{}"
    
    JSON.stringify([1, "false", false])
    // '[1,"false",false]'
    
    JSON.stringify({ name: "  " })
    // '{"name":"  "}'
    
    なお、元のタイプの文字列には、変換結果に二重引用符が付けられています.
    JSON.stringify('foo') === "foo" // false
    JSON.stringify('foo') === "\"foo\"" // true
    
    上記のコードでは、文字列fooが「」foo「」に変換されます.これは将来元に戻す時、ダブルクォーテーションはJavaScriptエンジンに知られています.fooは変数名ではなく文字列です.
    元のオブジェクトのメンバーの値がundefined、関数またはXMLオブジェクトである場合、このメンバーはフィルタされます.
    var obj = {
      a: undefined,
      b: function () {}
    };
    
    JSON.stringify(obj) // "{}"
    
    上のコードでは、配列arrのメンバーはundefinedと関数であり、それらはnullに変換されます.
    配列のメンバがundefined、関数またはXMLオブジェクトである場合、これらの値はnullに変換される.
    var arr = [undefined, function () {}];
    JSON.stringify(arr) // "[null,null]"
    
    JSON.strigify方法はオブジェクトのエルゴード属性を無視します.
    JSON.パース()
    JSON.parse方法は、JSON文字列をオブジェクトに変換するために使用されます.
    JSON.parse('{}') // {}
    JSON.parse('true') // true
    JSON.parse('"foo"') // "foo"
    JSON.parse('[1, 5, "false"]') // [1, 5, "false"]
    JSON.parse('null') // null
    
    var o = JSON.parse('{"name": "  "}');
    o.name //   
    
    入力された文字列が有効なJSON形式でない場合、JSON.parse方法はエラーとなります.
    JSON.parse("'String'") // illegal single quotes
    // SyntaxError: Unexpected token ILLEGAL
    
    上のコードの中で、二重引用符文字列の中にはシングル引用符文字列があります.シングル引用符文字列はJSON形式に合わないため、エラーが発生しました.
    三、JSONを使ってディープコピーを実現する
    var obj = {
        address: 'Beijing',
        time: 3,
        friends: ['aa', 'bb', 'cc']
    }
    var obj1 = JSON.parse(JSON.stringify(obj))
    obj1.time = 6
    console.log(obj.time)