JSON概要及び用法のまとめ
4170 ワード
JSON(JavaScript Object Notation)は、JavaScriptオブジェクト表示法であり、軽量級のデータ交換形式である.それは非常にプログラマがデータの処理に便利で、机械がデータの解析と生成にも便利で、応用が非常に広いです.
JSONはライト級のデータ交換形式で、あるJSON形式のファイル内部は例えばこのように成長できます.
JSON値は、
数値(整数または浮動小数)文字列(二重引用符)論理値(trueまたはfalse)配列(四角い括弧内)オブジェクト(かっこ内)
null
以上の6つの他に、jsのようなundefined、NANはありません.JSONは使用を拒否します.
JSONはどう使いますか
JSONは普通文字列の形式でデータのインタラクションの過程で遊歩して、そしてjsにとって、どのようにjson文字列とjsオブジェクトの間を相互に変換するかが重要です.
eval大法(json文字列->jsオブジェクト)
数字なら、インデントを表し、数字の大きさが10を超えたら10で処理します.
締め括りをつける
もちろん、伝説のie 8(以下)はある種の欠陥でJSON.parse()やJSON.strigify()の方法が使えないため、eval()は安全ではないので、それらを互換するならjson.jsを参照してもいいです.
以上、JSONの紹介と用法のまとめを紹介しました.皆さんに助けてもらいたいです.
JSONはライト級のデータ交換形式で、あるJSON形式のファイル内部は例えばこのように成長できます.
{
"name": "hanzichi",
"sex": "male"
}
見た目は全部key-valueのキーですよね.jsの対象に似ていますよね?はい、しかし同時にJSONは不服を表しています.私はjsの対象と同じように成長できません.私は自分の個性を持っています.同時に規定キー-値ペアの中の値の取得には一定の要求があります.JSON値は、
数値(整数または浮動小数)文字列(二重引用符)論理値(trueまたはfalse)配列(四角い括弧内)オブジェクト(かっこ内)
null
以上の6つの他に、jsのようなundefined、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"}
第二のパラメータは関数としてもよく、値を削除しても良いです.
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"}
第二のパラメータは、条件に該当する属性を削除することができます(または属性値を変更することができます.returnは属性を放棄することを表していません.returnの値は、keyが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を切り取ります.
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"
}
お手数ですが、知っていることがあります.締め括りをつける
もちろん、伝説のie 8(以下)はある種の欠陥でJSON.parse()やJSON.strigify()の方法が使えないため、eval()は安全ではないので、それらを互換するならjson.jsを参照してもいいです.
以上、JSONの紹介と用法のまとめを紹介しました.皆さんに助けてもらいたいです.