JavaScriptとJSON


JSON形式
JSON(JavaScript Object Notation,JSオブジェクトタグ)は、軽量レベルのデータ交換フォーマットです.JSONは、プログラミング言語とは完全に独立したテキスト形式でデータを格納・表示する.実際にJSONは文字列で、オブジェクト(カッコ)や配列(カッコ)が記述されています.たとえば、'{"name":"jack","age":25}'または'[{"name":"jack","age":25}, {"name":"rose","age":13}]'です.JSONフォーマットは特に厳格で、守らなければならない:1.キー名には二重引用符を付ける必要があります.2.属性値は数値(10進数)、文字列(二重引用符付き)、ブール値、null、配列またはJSONの要件を満たすオブジェクトのみで、関数、NaN、Infinity、undefinedではありません.3.最後の属性の後にカンマを付けることはできません.小数点以下には数字が必要です
JSONオンラインチェックサイト
http://www.bejson.com/
JavaScript処理JSONの3つの方法
  • JSON.stringify(value[,replacer[,space]):JavaScriptオブジェクトを文字列にシーケンス化します.パラメータの説明:
  • value:必要、JavaScriptオブジェクト.
  • replacer:オプション.関数または配列.replacerが関数である場合JSON.stringifyは関数を呼び出し、各メンバーのキーと値を入力します.この関数は各項目に返さなければなりません.元の値ではなく戻り値を使用します.関数は、元の属性値ごとに新しい属性値を返す必要があります.配列形式の場合、keyはインデックスであり、valueはこの配列項目である.replacerが配列である場合、配列に現れる属性のみが結果文字列にシーケンス化されます.メンバーの変換順序は、配列内のキーの順序と同じです.valueパラメータも配列の場合、replacer配列は無視されます.
  • space:オプションで、テキストにインデント、スペース、改行を追加し、使用しないでください.

  • ほとんどのJavaScriptオブジェクトの文法は厳密ではないのでJSON.stringifyはパラメータ値を処理します.
  • キー名は自動的に二重引用符を付けます.
  • 非配列オブジェクトのプロパティ.順序が狂う可能性があります.
  • 非配列オブジェクトのundefinedプロパティの要素、関数は、シーケンス化中に無視されます.ただし、配列オブジェクトのundefinedプロパティの要素、関数はnullになります.
  • 配列または非配列のオブジェクトに関係なく、NaN、Infinityおよび-Infinityはnull
  • に変換される.
    var manObj={  
        "firstName": "Kika",
        "lastName": "Jack",
        "age":18
    };
    
    var manStr1=JSON.stringify(manObj,function(k,v) {
        if (k === "age") {
            return "000" + v;
        } else {
            return v;
        }
    });
    var manStr2=JSON.stringify(manObj,["firstName","age","address"]);

    2.JSON.parse(text[,reviver]):JavaScriptオブジェクトの解析文字列は文字列フォーマットに厳しく、文字列フォーマットに誤りがある場合はエラーが報告されます.パラメータの説明:-text:必要です.有効なJSON文字列です.-reviver:オプションで、変換結果の関数で、解析後の各属性を処理して返します.
    JSON.parse(str,function(k,v){  
        console.log(k);
        console.log(v);
    });

    3.toJSON():JavaScriptオブジェクトを文字列に変換し、JSONデータ形式にフォーマットします.オブジェクトにtoJSONメソッドが実装されている場合は、JSONを呼び出す.stringifyがこのオブジェクトをシーケンス化するとき、JSON.stringifyは、このオブジェクトのtoJSONメソッドが返す値をシーケンス化します.DateタイプはJSONに直接伝えることができます.stringifyがパラメータを作るのは、DateタイプにtoJSONメソッドが内蔵されているからです.
    var info={  
        "msg":"data...",
        "toJSON":function(){
            var msg=new Object();
            msg["msg"]="hehe";
            return msg;
        }
    };
    //  {"msg":"hehe"}
    JSON.stringify(info); 
    
    var d=new Date();
    var n=d.toJSON();