ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのクロスブラウザーJSONシリアル化
var obj1 = { b1: true, s1: "text string", n1: 12345, n2: null, n3: undefined, a1: [ 1,1,2,3,5,8, [13, 21, 34] ], o1: { a: [3, 2, 1], b: { c: 42, d: [ 3.14, 1.618 ] } } };さまざまな方法でオブジェクトプロパティにアクセスできます。
obj1.s1; // returns "text string" obj1["n1"]; // returns 12345 obj1.a1[6][1]; // returns 21 obj1["o1"]["b"]["c"]; // returns 42このオブジェクトは、個々の引数を指定するのではなく、JavaScript関数とメソッドに渡すこともできます。便利なもの。 ただし、このオブジェクトをCookieに保存する必要がある場合はどうなりますか? AJAXリクエストを介してオブジェクトをWebサービスに渡す必要がある場合はどうなりますか?そのWebサービスがオブジェクトの変更されたバージョンを返したい場合はどうなりますか?答えはシリアル化です:
var JSON = JSON || {};JSON.Stringifyが使用できない場合、単一のOBJパラメーターを受け入れる新しい関数を定義します。パラメーターは、上記のOBJ1などの単一の値、配列、または複雑なオブジェクトにすることができます。 コードはオブジェクトタイプを調べます。単一の値はすぐに返され、文字列のみが変更され、値が引用符を付けられます。 配列またはオブジェクトが渡された場合、コードはすべてのプロパティを繰り返します。
// implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } };
var obj1 = { b1: true, s1: "text string", n1: 12345, n2: null, n3: undefined, a1: [ 1,1,2,3,5,8, [13, 21, 34] ], o1: { a: [3, 2, 1], b: { c: 42, d: [ 3.14, 1.618 ] } } };これにより、JSON文字列がeval()を使用してオブジェクトに変換されます。 すべてのプロジェクトでJSONシリアル化関数を実装するために急いで行く前に、いくつかのゴッチャスがあります。
はい、json.stringify()メソッドを使用してjavascriptの配列をシリアル化できます。この方法は、単純な配列だけでなく、オブジェクトの配列でも機能します。例は次のとおりです。
console.log(myjson);
この例では、array 'arr」はjson stringに変換されます。
脱介入は、JSON文字列をJavaScriptオブジェクトに戻すプロセスです。これは、json.parse()メソッドを使用して行われます。例は次のとおりです。
let myjson = '{"name": "john"、 "age":30、 "city": "new York"}';
let obj = json.parse(myjson);
console.log(obj);
json.parse()。
json.stringify()を使用してjavascriptの関数をシリアル化しようとすると、関数は無視され、結果のJSON文字列に表示されません。これは、JSONがデータ形式であり、JavaScriptの実行能力をサポートしていないためです。これにより、シリアル化プロセス中に値をフィルタストしたり、変更したりすることができます。これは、インデントに使用するスペースの数を表すJSON.Stringify()の3番目の引数として数字を提供することによって行われます。デフォルトでは、JavaScriptの日付オブジェクトをシリアル化すると、ISO形式の文字列に変換されます。それを脱上するとき、それは自動的に日付オブジェクトに戻されません。 new date()constructorを使用して手動で変換する必要があります。オブジェクトにtojson()メソッドがある場合、json.stringify()が呼び出し、元のオブジェクトの代わりに返される値をシリアル化します。 JavaScriptは最大2^53 - 1までの数値を正確に表すことができます。より多くの数値をシリアル化する必要がある場合は、正確な損失を避けるために最初に文字列に変換する必要があるかもしれません。
以上がJavaScriptのクロスブラウザーJSONシリアル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。