JavaScript一般的なJSON操作例の分析

7114 ワード

この例では、JavaScriptの一般的なJSON操作について説明します.皆さんの参考にしてください.具体的には以下の通りです.
1、JSON
JSON,JavaScript Object Notation)(JavaScriptオブジェクト表現法)は、テキスト情報を格納・交換する構文であり、JavaScriptに基づくサブセットである.データフォーマットは簡単で、読み書きが容易で、占有帯域幅が小さく、XMLに似ているが、JSONはXMLより小さく、より速く、解析しやすい.
JSONでは変数、関数、オブジェクトインスタンスはサポートされておらず、データのフォーマットにすぎません.データはキー値ペアにあり、データはカンマで区切られています.
2、JSONデータ型
(1)単純データ型:文字列、数値、ブール値、null(JavaScriptのundefinedはサポートされていません).
(2)オブジェクト:無秩序なキー値ペア.
(3)配列:秩序化された値リスト.
3、JSONオブジェクトとJavaScriptオブジェクトの違い
(1)属性は二重引用符でなければなりません(一重引用符ではなく、問題が発生する可能性があります).
(2)末尾にセミコロンがない.
(3)変数はサポートされていません.
4、JSON配列とJavaScript配列の違い
(1)末尾にセミコロンがない.
(2)変数はサポートされていません.
5、シーケンス化
(1)JSON.stringify()メソッド
JavaScriptオブジェクト(JSONオブジェクト)をJSON文字列にシーケンス化する方法.デフォルトでは、出力されるJSON文字列にはスペース文字やインデントは含まれません.JavScriptオブジェクトの関数やプロトタイプオブジェクトは無視されます.
3つのパラメータを受信します.フィルタ、オプションのフィルタ(関数、配列)、オプションの文字列インデント数です.

var person = {
  name: "Alice",
  age: 23,
  adult: true,
  friends: ["Bruce", "Cindy"]
};
var jsonText1 = JSON.stringify(person);//Date          JSON   
var jsonText2 = JSON.stringify(person, ["name", "friends"]);//Date          JSON   
var jsonText3 = JSON.stringify(person, function(key, value) {
switch(key){
  case "friends":
    return value.join("|");//                 
  case "age":
    return value + 1;
  case "adult":
    return undefined;//  undefined      
  default:
    return value;//       
  }
});
var jsonText4 = JSON.stringify(person, null, 4);
alert(jsonText1);//{"name":"Alice","age":23,"adult":true,"friends":["Bruce", "Cindy"]}
alert(jsonText2);//{"name":"Alice","friends":["Bruce", "Cindy"]}
alert(jsonText3);//{"name":"Alice","age":24,"friends":["Bruce|Cindy"]}
alert(jsonText4);
/*
{
  "name":"Alice",
  "age":23,
  "adult":true,
  "friends":[
    "Bruce",
    "Cindy"
  ]
}
*/


(2)toJSON()メソッドstringify()メソッドにおける2番目のパラメータフィルタの補足として.stringify()は、特定のオブジェクトのカスタムシーケンス化の要件を満たすことができない場合があり、toJSON()メソッドをオブジェクトに定義する.
シーケンス化されたオブジェクトの順序:
  • 1)toJSON()メソッドが存在し、それによって有効な値を取得できる場合、このメソッドが呼び出される.そうでなければ、オブジェクト自体を返します.
  • 2)2番目のパラメータが指定されている場合、この関数フィルタを適用します.入力関数フィルタの値は、ステップ1で返される値です.
  • )ステップ2で返される各値は、対応するシーケンス化される.
  • 4)3番目のパラメータが指定されている場合、対応するフォーマットが実行されます.
  • 
    var person = {
      name: "Alice",
      age: 23,
      adult: true,
      friends: ["Bruce", "Cindy"],
      toJSON:function(){
        return {"name":"Alice","id":23,"friends":["Bruce", "Cindy"]};
      }
    };
    var jsonText1 = JSON.stringify(person);//Date          JSON   
    var jsonText2 = JSON.stringify(person, ["adult", "id", "friends"]);//Date          JSON   
    var jsonText3 = JSON.stringify(person, function(key, value) {
    switch(key){
      case "friends":
        return value.join("|");//                 
      case "id":
        return value - 1;
      case "age":
        return value + 1;//  undefined      
      default:
        return value;//       
      }
    });
    var jsonText4 = JSON.stringify(person, null, 4);
    alert(jsonText1);//{"name":"Alice", "id":23, "friends":["Bruce", "Cindy"]};
    alert(jsonText2);//{"id":23,"friends":["Bruce", "Cindy"]}
    alert(jsonText3);//{"name":"Alice","id":22,"friends":["Bruce|Cindy"]}
    alert(jsonText4);
    /*
    {
      "name":"Alice",
      "id":23,
      "friends":[
        "Bruce",
        "Cindy"
      ]
    }
    */
    
    

    (3)eval()メソッド
    JSON文字列をJavaScriptオブジェクト(JSONオブジェクト)に解析する最初の方法.
    
    var JSText = eval('(' + '{"name":"Alice", "friends":["Bruce", "Cindy"]}' + ')');
    alert(JSText.friends);//Bruce,Cindy
    
    

    注意:evalメソッドは、非厳格モードでのみ使用でき、use strictでは使用できません.
    (4)jQuery.parseJSON()メソッド
    JSON文字列をJavaScriptオブジェクト(JSONオブジェクト)に解析する第2の方法.
    jQueryのjsファイルを先に導入する必要があります.
    
    var JSText = jQuery.parseJSON('{"name":"Alice", "friends":["Bruce", "Cindy"]}');
    alert(JSText.friends);//Bruce,Cindy
    
    

    注意:jQuery 3.0からjQuery.parseJSON()メソッドは推奨されません.JSON文字列を解析するには、オリジナルのJSON.parse()メソッドに変更してください.
    (5)JSON.parse()メソッド
    JSON文字列をJavaScriptオブジェクト(JSONオブジェクト)に解析する第3の方法.
    2つのパラメータを受け取ります:JSON文字列とオプションの関数(キー値ペアごとに呼び出されます).
    eg1:
    
    var JSText1 = JSON.parse('{"name":"Alice", "friends":["Bruce", "Cindy"]}');
    var JSText2 = JSON.parse('{"name":"Alice", "friends":["Bruce", "Cindy"]}', function(key, value) {
      if (key == "friends")
          return value.join("&");
        else
          return value;
    });
    alert(JSText1.friends);//Bruce,Cindy
    alert(JSText2.friends);//Bruce&Cindy
    
    

    注意:最初のパラメータはJSON文字列なので、JSONオブジェクトは引用符で囲む必要があります.
    eg2:
    
    var person = {
      name: "Alice",
      age: 23,
      birthday: new Date(1993, 12, 6)//     Date  
    };
    var jsonText = JSON.stringify(person);//Date          JSON   
    alert(jsonText);//{"name":"Alice","age":23,"birthday":"1994-01-05T16:00:00:000Z"}
    var JSText = JSON.parse(jsonText, function(key, value) {//   JSText    Date  , JSText.birthdat        Date  
      if (key == "birthday")
        return new Date(value);
      else
        return value;
    });
    alert(JSText.birthday.getFullYear());//1994,  Date  ,    getFullYear()
    
    

    PS:ここでは、関連するjsonオンラインツールをいくつかお勧めします.参考にしてください.
    オンラインJSONコード検査、検査、美化、フォーマットツール:http://tools.jb51.net/code/json
    JSONオンラインフォーマットツール:http://tools.jb51.net/code/jsonformat
    オンラインXML/JSON相互変換ツール:http://tools.jb51.net/code/xmljson
    jsonコードオンラインフォーマット/美化/圧縮/編集/変換ツール:http://tools.jb51.net/code/jsoncodeformat
    オンラインjson圧縮/エスケープツール:http://tools.jb51.net/code/json_yasuo_trans
    JavaScriptに関する詳細については、「JavaScriptにおけるjson操作テクニックのまとめ」、「JavaScriptアルゴリズムテクニックのまとめ」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズムテクニックのまとめ」、「JavaScript遍歴アルゴリズムとテクニックのまとめ」、「JavaScript数学演算の使い方のまとめ」を参照してください.
    JavaScriptプログラムの設計に役立つことを願っています.