JSONデータ


一、json値のタイプ
  • 単純値:文字列、数値、ブール値、nullはundefined(jsonの数値表示:2)
  • をサポートしていません.
  • オブジェクト:順序正しいキーパッドペアのセットは、各キーパッドの値が単純な値であっても良いし、複雑なデータタイプであっても良いです.(Jsonの文字列:「ハローワールド」)json文字列とjavascript文字列の違いは、Jsonはダブルクォーテーションを使用しなければなりません.
  • 配列:配列の値は単純な値であってもよく、複雑なデータタイプであってもよい.
  • 変数、関数、およびオブジェクトのインスタンスはサポートされていません.
    二、Json対象とjavascript対象
    違い:
                //javascript  
                var obj = {
                    name: "liu",
                    age: 33,
                };
    
    
                // json  
                {
                    "name": "liu",
                    "age": 33,
                }
  • 宣言変数がありません.
  • 終端番号がない()
  • jsonにもダブルクォーテーションを追加します.
    三、文字列とjsonオブジェクトの変換
    1、JSON.parse().parseは文字列をもとの生javascript値(javascriptオブジェクト)に解析します.各属性名にはダブルクォーテーションが必要です.
    var str = '{"name":"huangxiaojian","age":"23"}';
    console.log(JSON.parse(str));  //Object { name: "huangxiaojian", age: "23" }
    もう一つのパラメータを受信して、JSON.strigify()を区別するフィルタ関数(フィルタ)を復元関数と呼びます.以下のとおりです
                    var book = {
                        title: "hello",
                        author: [ "apple" ],
                        year: 300,
                        releaseDate: new Date(2016)
                    };
    
                    var jsonText = JSON.stringify( book )
                    var bookCopy = JSON.parse( jsonText, function( key, value ) {
                        if (key == "releaseDate" ) {
                            return new Date( value );
                        } else {
                            return value;
                        }
                    } );
                    console.log( bookCopy.releaseDate.getFullYear() );
    上記のコードブックの対象は、releaseDate属性があり、Dateオブジェクトを保存し、序文化された後に有効なJSONデータ文字列になり、その後解析してbook CopyにDateオブジェクトに復元され、release Dateキーの値が発生すると、該当する値に基づいて新しいDateオブジェクトを作成し、その結果としてbook Copy.releaseDate属性に新しいオブジェクトを保存します.
    2、JSON.strigify(object、selector、retract)オブジェクト、フィルタ(配列または関数)は、インデントを保持します.
    JSON.stingify()はjsonオブジェクトを文字列に並べています.(関数、プロトタイプを無視)
    var a = {a:1,b:2};
    console.log(JSON.stringify(a));  //{"a":1,"b":2}            
    3、JSON.stringify()の第二パラメータは、フィルタが配列である.
    フィルタ:配列(配列であれば、配列中の属性を保持します.)を使用してもいいし、関数(関数であれば、2つのパラメータ:属性と属性値を伝えます.)
    var person = {
       name: "liu",
       age: 33,
       eat: [ "apple" ],
       sex: "man"
    }
    var jsonText = JSON.stringify( person, ["eat", "age" ] )
    console.log( jsonText )  //{"eat":["apple"],"age":33}
    4、JSON.strigify()の2番目のパラメータは関数です.
    関数:関数の2つのパラメータ().switchのパラメータは属性名(必須文字列)です.undefinedであれば属性を無視します.
    特に注意してください.valueは「javascript高級プログラム設計第三版」の中で私と違います.私の理解に問題があるかもしれませんが、テストしました.結果も順序化された値です.誰が解決できますか?教えてください.(page:566~567)
            var person = {
                "name": "liu",
                "age": 33,
                "eat": [ "apple" ],
                "sex": "man"
            }
            var jsonText = JSON.stringify( person, function( key, value ) {
                // console.log( value )
                switch("eat") {
                    case "eat":
                    return [3,4,5,5,5].join(",");
                    case "age":
                    return 33;
                    case "sex":
                    return undefined;
                    default:
                    return value;                                                
                }
            } )
            console.log( jsonText )  //"3,4,5,5,5"
    5、インデント、最大インデントは10です.10を超えると10に変換されます.
            var person = {
                "name": "liu",
                "age": 33,
                "eat": [ "apple" ],
                "sex": "man"
            }
            var jsonText = JSON.stringify( person, null, 4 ) 
            console.log( jsonText )
    
    
    /////////////////////////  ,    ////////////////////
    {
        "name": "liu",
        "age": 33,
        "eat": [
            "apple"
        ],
        "sex": "man"
    }
    
    
    
            //       
            var jsonText = JSON.stringify( person, null, "---" ) 
            console.log( jsonText )
    /////////////////////////  ,    ////////////////////
    {
    ---"name": "liu",
    ---"age": 33,
    ---"eat": [
    ------"apple"
    ---],
    ---"sex": "man"
    }
    6、toJSON()方法は、自分のjsonデータフォーマットに戻ります.
            var date = new Date()
            console.log( date.toJSON() )  
    
     //person    json    ,    。
            var person = {
                "name": "liu",
                "age": 33,
                "eat": [ "apple" ],
                "sex": "man"
            }
    console.log( person.toJSON() )   
    7、オブジェクトにtoJSON()を追加する方法で、文字列を返すと文字列書式、オブジェクトはオブジェクト書式、単一の数値は数値書式です.
                    var person = {
                        "name": "liu",
                        "age": 33,
                        "eat": [ "apple" ],
                        "sex": "man",
                        "toJSON": function () {
                            return this.age
                        }
                    }
                    console.log( person.toJSON() )  // 33
    
    toJSON()はフィルターの補充ができます.
    8、一つの対象がJSON.strigifyに入ったと仮定し、その対象の順序を逐次列化する.
  • にtoJSON()法があり、有効値が取得されると、この方法が起動され、そうでなければデフォルトの順序で並べ替えられます.
  • は、第2のパラメータが提供された場合、この関数フィルタを適用すると、着信関数フィルタの値は第1のステップの戻り値となる.
  • は、第2のステップで返された各値を逐次する.
  • は、第3のパラメータが提供された場合、対応するフォーマットを実行する.