JSONとは何ですか?
JavaScript オブジェクト記法。
JSON は軽量のデータ交換フォーマットです。JSON フォーマット ファイルの内部は次のようになります。
{ "name": "hanzichi", "sex": "male" }
これらはすべてキーと値のペアであり、js オブジェクトに非常によく似ています。はい、しかし同時に、JSON は JS オブジェクトと同じようには見えないという不満を表明しました。そのため、キーと値のペアのキーには二重引用符を使用する必要があると規定されています。同時に、キーと値のペアの値には特定の要件があります:
JSON 値は次のとおりです:
数値 (整数または浮動小数点数)
文字列 (二重引用符で囲まれた)
論理値 (true)または false )
Array (角括弧内)
Object (中括弧内)
null
上記6種類以外は存在せず、未定義も存在せず、JSのようなNAN、JSONは使用を拒否します。
JSON の使用方法?
JSON は通常、データ対話プロセス中に文字列の形式でやり取りされるため、js の場合、json 文字列と js オブジェクトを相互に変換する方法が特に重要です。
eval メソッド (json 文字列 -> js オブジェクト)
var jsonStr = '{"name": "hanzichi", "sex": "male"}'; var ans = eval('(' + jsonStr + ')'); console.log(ans.name, ans.sex); // hanzichi male
eval 関数は非常に高速ですが、任意の javascirpt コードをコンパイルできるため、セキュリティ上の問題が発生する可能性があります。 eval の使用は、受信コード パラメーターが信頼できるという前提に基づいています。場合によっては、クライアントが信頼できない可能性があります。セキュリティを考慮する場合は、JSON パーサーを使用するのが最善です。JSON パーサーは JSON テキストのみを受け入れるため、次のように安全です。
JSON.parse (json string->js object)
var jsonStr = '{"name": "hanzichi", "sex": "male"}'; var obj = JSON.parse(jsonStr); console.log(typeof obj, obj); // object Object {name: "hanzichi", sex: "male"}
2 番目のパラメーターには、値を削除できる関数を指定できます:
var jsonStr = '{"name": "hanzichi", "sex": "male", "age": 10}'; var obj = JSON.parse(jsonStr, function(key, value) { if(key === 'name') { return 'my name is ' + value; } return value; }); console.log(typeof obj, obj); // object Object {name: "my name is hanzichi", sex: "male", age: 10}
JSON.stringify (js object->json string)
var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj); console.log(jsonStr); // {"name":"hanzichi","sex":"male","age":"10"}
JSON 文字列に変換する必要がある属性を指定するパラメーターを追加します (配列形式では、配列と同じ名前を持つ JS オブジェクト属性のみが変換されます):
var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, ['name']); console.log(jsonStr); // {"name":"hanzichi"}
2 番目のパラメーターは関数にすることもできます。削除できます 条件を満たす属性 (または属性値を変更します。ノーリターンは属性を放棄することを意味し、戻り値は JSON 文字列内のキーの値を示します)
var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, function(key, value) { if(key === 'name') { return 'my name is ' + value; } return value; }); console.log(jsonStr); // {"name":"my name is hanzichi","sex":"male","age":"10"}
3 番目のパラメータも存在する可能性があります。数値または文字列を指定できます。
数値の場合は、10を超える場合は10として処理されます。
var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, null, 4); console.log(jsonStr); // { // "name": "hanzichi", // "sex": "male", // "age": "10" // }
は文字列にすることもできます。同様に、文字列の長さが 10 を超える場合、10 個だけがインターセプトされます。 ie8 (およびそれ以下) は、特定の欠陥により JSON.parse() および JSON.stringify() メソッドを使用できず、eval() は安全ではありません。これらと互換性を持たせたい場合は、json2 を参照してください。 js.