えっと、これはJSONです.

4757 ワード

この文章を書く理由
JSONを知っていますかJSONはJavaScriptの対象ですか?JSONは、functionオブジェクトを記憶してもいいですか?JSONの本質は何ですか?JSONは注釈が書けますか?全部答えられたら、おめでとうございます.JSONについてよく知っています.もし書いてもよく分かりません.私と一緒に相談する必要がありますか?
私は以前はJSONの概念についても一知半解で、よくJavaScriptのObjectオブジェクトと混同していたので、多くの間違いを引き起こしました.特に研究JSONには、package.jsonというファイルがあります.このファイルにコメントを書いたり、関数を記憶したりすると、最終的にこのファイルを解析するときにエラーが発生します.
それから自分で関連資料を調べて、結論を出しました.今取り出して皆さんと分かち合います.また、もし文章に間違いがあったら、直してください.
JSONとは何ですか
まず、公式はどのようにNodeJSを記述しているかを見てみましょう.JSON(JavaScript Object Notation)はライト級のデータ交換形式です.読みやすく、書きやすい.機械解析と生成も容易です.それはJavaScript Programming Languageに基づいて、Standard ECMA-232 rd Edition-December 1999のサブセットです.JSONは言語から完全に独立したテキスト形式を採用していますが、C言語家族のような習慣も使用しています.これらの特性はJSONを理想的なデータ交換言語にする.ソースアドレスを参照:http://www.json.org/json-zh.html.
公式的な説明は、特に明らかではないが、これはライト級のデータ交換形式であり、JavaScriptに基づいてサブセットであるということだけを説明している.これは全然説明できません.しかし、他のデータ交換形式を連想しました.それはxmlです.このフォーマットは特にwebServiceで多く使われています.xmlは何ですか?本質はDOM構造です.対照的に、JSONの本質は文字列ですが、この文字列は異なる文字列ではなく、いくつかの列の文法と構造があります.その文法を紹介します.
JSONの文法紹介
一般的なJSONデータ構造は、それぞれ2つの形態があります.
  • 「名前/値」ペアのセットは、JavaScriptのオブジェクトのようです.
  • 値にはシリアルテーブルがあります.ほとんどの言語では、配列として理解されています.
  • まず第一の場合を見ますと、対象は無秩序な「名前/値ペア」の集合です.一つのオブジェクトは「{」(左括弧)で始まり、「}」(右括弧)で終了します.各「名称」の後に「:」(コロン);「名前/値ペア」の間に「、」(カンマ)で区切られます.
    これはJavaScriptの対象文字の量と似ていますが、本質的には違いがあります.例えば、オブジェクトの名前(またはkey)はダブルクォーテーションマークでくくらなければなりません.引用符だけではだめです.ましてや無視する必要はありません.JavaScriptのオブジェクトの名前の値はしばしばダブルクォーテーションを無視しますが.
    {
        name : 'test',
        age  : 123,
        success : function(){
            //todo
        }
    }
    
    JSONでは通用しません.「名称(key)」の値に制限があるほか、対象の「値(value)」も制限されています.例えば、JavaScriptの対象の字面量の値は文字列、配列、関数、整形に関係なく任意に値を付けられます.JSONの値はダブルクォーテーションの文字列(string)、数値(umber)であることができます.true、false、null、オブジェクトまたは配列、
    この他に、これらの値以外は問題が解決され、先ほどのようにJSONの値にjsonを付与するとエラーとなる.
    次に、値を見るには、シーケンステーブル(または配列と呼ばれる)があり、配列は、値のあるシーケンステーブルであり、1つの配列は、「」(左中かっこ)で始まり、「」(右中かっこ)で終了します.
    そろそろ文法を紹介し終わって、まとめてみます.functionは本質的に意味のある文字列データのインタラクティブフォーマットです.
    JavaScript言語におけるJSONの解析と序列化
    JavaScriptでは、常にJSONを処理しています.例えば、データを提出する前に、しばしば順序化処理が必要です.その後に引いてきたJSONデータは、よく解析してJavaScriptオブジェクトを得ることがあります.JavaScriptライブラリを使用しています.これらのライブラリはJSONの操作をカプセル化していますので、現象を引き起こします.つまり、私たちは使うだけで、本質を揃えることができます.私たちはよく分かりません.
    初期のJSON解像器はJavaScript中のevalを通過する()関数によって解析されます.ECMA 5の配置が規範化されるまで、JSONオブジェクトはJSONを解析して序列化するために定義されています.JSONというグローバルオブジェクトをサポートするブラウザは、IE 8+、FF 3.5+、Safari 4+、ChromeおよびOpera 10.5+を含みます.この対象をサポートしないブラウザについては、IE 6、IE 7などはどのように処理しますか?
    心配しないでください.JSONの発明者はとっくに互換コードを実現してくれました.その住所は:https://github.com/douglascrockford/JSON-jsを選択します.オリジナルのJSONオブジェクトをサポートしない場合には、このコードを導入して互換性の問題を解決できます.
    JSONには、2つの主要な方法があり、JSONの序文化と解析を解決するために用いられています.それぞれJSONstringfyです.それぞれの使い方を見てみましょう.
    ECMA 5で定義されている標準インターフェースは以下の通りです.
    /**
    @param {*} value
    @param {Function} [replacer]
    @param {Number|String} [space]
    @static
    */
    JSON.stringify = function(value,replacer,space) {};
    
    この中で一つのパラメータはドロップしなければなりません.また、順序付けの対象です.コード例は以下の通りです.
    var obj = {
        name : 'hello',
        age  : 18
    }
    
    var jsonText = JSON.stringify(obj)    //  :{"name":"hello","age":18}
    
    2番目のパラメータはオプションであり、関数または配列となります.配列であれば、フィルタ項目を指定します.上記の例を例にとって、次のように呼びます.
    var jsonText = JSON.stringify(obj,["name"])     //  : {"name":"hello"}
    
    関数の場合、コールバック関数内のパラメータは、Javascriptのオブジェクト内のparseおよびkeyの値に対応している.例は以下の通りである.
    var jsonText = JSON.stringify(obj,function(key,value){
        switch(key) {
            case "name": return value+" json";
            case "age" : return 20;
            default : return value;
        }
    });
    //   {"name":"hello json","age":20}
    
    3番目のパラメータもオプションです.文字列のインデントを行うには、次のような例があります.
    var jsonText = JSON.stringify(obj,null,4); // 4     
    
    //          ,       :
    {
        "name" : "hello",
        "age" :  18
    }
    
    数字の設定ができるほか、文字設定でインデントすることもできます.興味があれば試してみてください.
    ECMA 5対valueインターフェースの定義は以下の通りである.
    /**
    @param {string} jsonString
    @param {Function} [reviver]
    @static
    */
    JSON.parse = function(jsonString,reviver) {};
    
    この方法は、2つのパラメータを受け入れる.ここで、2番目のパラメータは任意である.
    最初のパラメータの役割は、変換されるJSON文字列です.たとえば、上のjson Textをparseを通じて元のJavascriptオブジェクトに戻すことができます.
    var obj=JSON.parse(json Text)//objはJavaScriptオブジェクトです.
    2番目のパラメータは、関数であり、より細かい制御変換プロセスに使用されます.2つのパラメータを受け入れて、それぞれJSONデータのキーパッドのペアに対応しています.呼び出し例は以下の通りです.
       var obj = JSON.parse(jsonText,function(key,value){
            //todo
        }); 
    
    ヘルプリンク
    JSON中国語公式サイト