JSON基礎使用詳細

6101 ワード

JSON:JavaScriptオブジェクト表示法
1.1 JSON説明
以前、XMLはインターネット配信の統一基準だったが、業界ではXMLに疑問を持っている人がかなりいます.データの抽出も面倒くさいです.
2006年、JSONはIETFに提出されました.その後、JSONはだんだん発展してきて、インターネットで広く使われています.
私達は覚えておきます.JSONはデータ形式だけで、主にデータを伝達するために使われています.プログラム言語ではなく、JavaScriptの文法と似ていますが、JavaScriptがJSONを使うのではなく、JSONはデータ形式だけです.多くのプログラミング言語はJSONに対する解像度とプログレッシブがあります.
1.2 JSON文法
(1)基礎文法:
  • は、JavaScriptデータをJSONデータに変換する、すなわち、プログレッシブ
  • ともいう.
    //  JavaScript      JSON   
    var jsonText = JSON.stringify(book);
    
  • JSONデータをJavaScriptデータに変換することも、解析
  • と呼ばれています.
    //  JSON       JavaScript 
    var js = JSON.parse(jsonText);
    
    (2)JSONは、以下の3種類のデータを表すことができる.
    簡単な値:JSONの中で数値、文字列、ブール値、nullを表すことができます.undefinedはサポートされていません
    オブジェクト:複雑なデータタイプで、キーのセットを保存します.JSONでは、オブジェクトのキーに二重引用符を付けなければなりません.値は単純な値でもいいし、複雑なデータタイプの値でもいいです.
    配列:複雑なデータタイプで、値のセットを保存します.値は単純な値でも良いし、複雑なデータタイプの値でも良いです.
    JSONは変数、関数、オブジェクトのインスタンスなどをサポートしていません.データを表す形式だけです.中にはデータを格納するだけで、論理、操作などのコードがありません.
  • 単純値、単純値の文字列は二重引用符を使用しなければならず、シングル引用符を使用してエラーを報告する
    number、string、bool、null
    
  • .
  • オブジェクトは、直接、{}記号を使って、変数がなく、括弧の後にはプラス記号がない.同じオブジェクトの中に同じ属性があるべきではなく、以下の二つのlocation属性はそれぞれ異なるオブジェクトに属しています.これは大丈夫です.
    {
        "name": "   ",
        "age": 20,
        "arr": [1,2,3,4],
        "location": "    ",
        "school": {
            "location": "    "
        }
    }
    
  • 配列は、直接に[]記号を使用し、中の単純値と複雑なデータタイプを組み合わせて使用することができ、より複雑なデータセットを構成する.
    [
        20,
        {
            "name": "   ",
        	"age": 20
        },
        [1,2,3],
        "   "
    ]
    
  • オブジェクトと配列は、一般的にJSONデータの最外層の構造であり、それらを利用して様々なデータセットを作成することができる.
    1.3序文化と解析
    1.31プログレッシブオプション
    (1)フィルタ結果JSON.stringify(js , )方法は、2つのパラメータを伝達することができる.
  • フィルタパラメータが配列である場合、JSON.strigify()の結果は、配列内の属性
    var obj = {
        name: "   ",
        age: 20,
        arr: [1,2,3,4],
        location: "    ",
        school: {
            location: "    "
        }
    }
    
    console.log(JSON.stringify(obj,["name","age","arr"]));
    // {"name":"   ","age":20,"arr":[1,2,3,4]}
    
  • のみを含むことになる.
  • フィルタパラメータが関数(フィルタ関数)である場合、プログレッシブオブジェクトの結果を変更することができます.関数の最初のパラメータはデフォルトでは属性名(キー)で、2番目のパラメータはデフォルトでは属性値です.undefinedを返した場合、対応する属性名と属性値は無視されます.
    var jsonText = JSON.stringify(obj,function(key,value){
        switch (key) {
            case "name":
                return 20;
            case "age":
                return "   ";
            case "arr":
                return [4,3,2,1];
            case "school":
                return undefined;
            default:
                return value;
        }
    });
    
    console.log(jsonText);
    // {"name":20,"age":"   ","arr":[4,3,2,1],"location":"    "}
    
    (2)フォーマット:文字列インデント、空白文字
    3番目のパラメータはインデントと空白を制御します.
  • もし数値であれば、空白文字の個数を表し、最大10であり、10より大きいものは10に変換される.3番目のパラメータが有効なパラメータであれば、自動的に改行を挿入して読み取り可能性を高めます.
  • var jsonText = JSON.stringify(obj,null,4);
    console.log(jsonText);
    /*
    {
        "name": "   ",
        "age": 20,
        "arr": [
            1,
            2,
            3,
            4
        ],
        "location": "    ",
        "school": {
            "location": "    "
        }
    }
    */
    
  • もし文字列であれば、この文字列は元の空白文字ではなくインデント文字として使用されます.文字列パラメータの中の文字数は10個を超えてはいけません.10個を超えると、最初の10文字しか現れません.
  • var jsonText = JSON.stringify(obj,null,"-");
    console.log(jsonText);
    /*
    {
    -"name": "   ",
    -"age": 20,
    -"arr": [
    --1,
    --2,
    --3,
    --4
    -],
    -"location": "    ",
    -"school": {
    --"location": "    "
    -}
    }
    */
    
    (3)toJSON方法
    私たちは、順序化が必要なオブジェクトにtoJSON方法を追加することができ、このようにJSON.strigify()方法を使用すると、実際にオブジェクト中のtoJSON()方法を呼び出すことになる.
    var obj = {
        name: "   ",
        age: 20,
        arr: [1,2,3,4],
        location: "    ",
        school: {
            location: "    "
        },
        toJSON:function(){
            return this.name;
        }
    }
    var jsonText = JSON.stringify(obj);
    console.log(jsonText);
    //    
    
    (4)一つのオブジェクトをJSON.strigify()に導入し、そのオブジェクトの順序は以下の通りである.
    <1>オブジェクトにtoJSON方法がある場合は、この方法を直接呼び出します.
    <2>JSON.strigify()に第二のパラメータがある場合は、フィルタを適用し、フィルタの許容値は<1>に戻ります.
    <3>フィルタ処理<1>で返した値
    <4>3番目のパラメータがあれば、対応するフォーマットを実行します.
    var obj = {
        name: "   ",
        age: 20,
        arr: [1,2,3,4],
        location: "    ",
        school: {
            "location": "    "
        },
        toJSON:function(){
            name = this.name;
            age = this.age;
            return {name,age};
        }
    }
    var jsonText = JSON.stringify(obj,function(key,value){
        if(key === "name") {
            return "   ";
        }else{
            return value;
        }
    });
    console.log(jsonText); // {"name":"   ","age":20}
    
    プログレッシブオブジェクトを理解する過程はやはり重要です.
    1.31解析オプション
    JSON.parse()の方法にも二つのパラメータがあります.二つ目のパラメータは一つの関数です.還元関数といいます.
    var obj = {
        name: "   ",
        age: 20,
        arr: [1,2,3,4],
        location: "    ",
        school: {
            "location": "    "
        }
    };
    var jsonText = JSON.stringify(obj);
    var jsText = JSON.parse(jsonText,function(key,value){
        if (key === "name") {
            return "    ";
        } else {
            return value;
        }
    });
    console.log(jsText);
    //{name: '    ', age: 20, arr: Array(4), location: '    ', school: {…}}
    
    1.4まとめ
  • JSON.stringify()は、序文化のために用いられ、JSON.parse()は、解析
  • のために用いられる.
  • JSON.stringify()には三つのパラメータがあり、一つ目はjsオブジェクト、二つ目はフィルタ、三つ目はJSON出力
  • をフォーマットするためのものです.
  • JSON.parse()には2つのパラメータがあり、1番目のパラメータはJSONオブジェクト、2番目のパラメータは還元関数
  • である.
  • jsオブジェクトでは、toJSON方法を宣言することができ、JSON.stringify()方法が起動されると、toJSON方法
  • が自動的に実行される.
  • によると、JSON.stringify()方式の戻り値は、文字列タイプ
  • である.