ホームページ > 記事 > ウェブフロントエンド > JSON の概要と使い方_JavaScript スキルの概要
JSON (JavaScript Object Notation)、JavaScript Object Notation は、軽量のデータ交換形式です。プログラマがデータを処理するのに非常に便利であり、マシンがデータを解析して生成するのにも便利です。
JSON は軽量のデータ交換形式です。JSON 形式ファイルの内部は次のようになります。
{ "name": "hanzichi", "sex": "male" }
これらはすべてキーと値のペアであり、js オブジェクトに非常に似ているように見えますよね?それはそうですが、同時に JSON は js オブジェクトと同じに見えないという不満を表明しました。そのため、キーと値のペアのキーには二重引用符を使用する必要があると規定されています。同時に、キーと値のペアの値には特定の要件があることが規定されています:
JSON 値は次のとおりです:
数値 (整数または浮動小数点)
文字列 (二重引用符で囲む)
論理値 (true または false)
配列 (角括弧内)
オブジェクト (中括弧内)
ヌル
上記の6種類以外にはjsのようなundefineや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字符串 -> js对象) 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对象 -> json字符串) 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 を超える場合、
のように属性の前に追加されます。var obj = {name: 'hanzichi', sex: 'male', age: '10'}; var jsonStr = JSON.stringify(obj, null, 'pre'); console.log(jsonStr); // { // pre"name": "hanzichi", // pre"sex": "male", // pre"age": "10" // }
ここで質問がありますが、出力は次の形式になると思います...
{ "prename": "hanzichi", "presex": "male", "preage": "10" }
知っている人がいたら教えてください...
概要
もちろん、伝説的な ie8 (およびそれ以下) は、いくつかの欠陥のため JSON.parse() および JSON.stringify() メソッドを使用できません。また、それらと互換性を持たせたい場合、eval() は安全ではないようです。 json2.js を参照できます。
上記の内容は、JSON の概要とその使用法の概要を示しています。お役に立てば幸いです。