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法によって還元される.
元のオブジェクトのメンバーの値がundefined、関数またはXMLオブジェクトである場合、このメンバーはフィルタされます.
配列のメンバがundefined、関数またはXMLオブジェクトである場合、これらの値はnullに変換される.
JSON.パース()
JSON.parse方法は、JSON文字列をオブジェクトに変換するために使用されます.
三、JSONを使ってディープコピーを実現する
JSONフォーマット(JavaScript Object Notationの略語)はデータ交換のためのテキストフォーマットであり、2001年にDuglas Crockfordによって提出され、煩雑で重いXMLフォーマットに代わることを目的としています.
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)