JSON の概要と使い方_JavaScript スキルの概要

WBOY
リリース: 2016-05-16 15:14:28
オリジナル
1220 人が閲覧しました

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 の概要とその使用法の概要を示しています。お役に立てば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!