ホームページ  >  記事  >  ウェブフロントエンド  >  Js (Jquery) での文字列と JSON 形式間の変換例の簡単な分析 (例を直接実行)_jquery

Js (Jquery) での文字列と JSON 形式間の変換例の簡単な分析 (例を直接実行)_jquery

WBOY
WBOYオリジナル
2016-05-16 17:29:291172ブラウズ

まず、新しいjsファイルを作成する準備をします。以下は、JSON2.js の内容を呼び出し用の js ファイルにコピーします。

コードをコピーします コードは次のとおりです。以下のように:

/*
http://www.JSON.org/json2.js
パブリック ドメイン。
明示的または黙示的な保証はありません。ご自身の責任で使用してください。
http://www.JSON.org/js.html を参照
このコードは展開前に縮小する必要があります。
http://javascript.crockford.com/jsmin を参照してください。 html
自分のコピーを使用してください。自分が制御していないサーバーからコードをロードするのは非常に賢明ではありません。
このファイルは、stringify
と parse.
JSON.stringify(value, replacer, space) の 2 つのメソッドを含むグローバル JSON オブジェクトを作成します。 )
value 任意の JavaScript 値、通常はオブジェクトまたは配列。
replacer object
オブジェクトの値を文字列化する方法を決定するオプションのパラメータ。
関数または文字列の配列にすることができます。
space ネストされた構造のインデントを指定するオプションのパラメーター
。省略した場合、テキストは、
余分な空白なしでパックされます。数値の場合

各レベルでインデントするスペースの数を指定します。文字列 (「t」や「 」など) の場合、
各レベルでのインデントに使用される文字が含まれます。
このメソッドは、JavaScript 値から JSON テキストを生成します。
オブジェクトの場合値が見つかった場合、オブジェクトに toJSON
メソッドが含まれている場合、その toJSON メソッドが呼び出され、結果は
文字列化されます。 toJSON メソッドはシリアル化されません。シリアル化する必要がある名前と値のペアで表される
値を返します。
何もシリアル化する必要がない場合は、未定義を返します。 toJSON メソッド
値に関連付けられたキーが渡され、これは値
値にバインドされます
たとえば、これにより日付が ISO 文字列としてシリアル化されます。
Date.prototype.toJSON = function (key) {
function f(n) {
// 整数を少なくとも 2 桁にフォーマットします。
return n < 10? '0' n : n;
}
return this.getUTCFull Year() '-'
f(this.getUTCMonth() 1) '-'
f(this. getUTCDate()) 'T'
f(this.getUTCHours( )) ':'
f(this.getUTCMinutes()) ':'
f(this.getUTCSeconds()) 'Z';
};
オプションの replacer メソッドを提供できます。これには、各メンバーの
キーと値が渡され、これが含まれる
オブジェクトにバインドされます。メソッドから返される値は
シリアル化されます。メソッドが未定義を返す場合、メンバーは
シリアル化から除外されます。
replacer パラメーターが文字列の配列の場合、シリアル化するメンバーを選択するために
が使用されます。結果をフィルタリングします
置換配列にリストされているキーを持つメンバーのみが文字列化される

未定義関数や
関数など、JSON 表現を持たない値はシリアル化されません。オブジェクト内のそのような値は
削除されます。配列では null に置き換えられます。
置換関数を使用して、これらを JSON 値に置き換えることができます。
JSON.stringify(unknown) は unknown を返します。
オプションのスペース パラメーターは、改行で埋められた
値の文字列化を生成します。
読みやすくするためのインデント

スペースパラメータが空でない文字列の場合、その文字列は
インデントに使用されます。スペース パラメーターが数値の場合、
インデントはその数のスペースになります。
例:
text = JSON.stringify(['e', {pluribus: 'unum'}]);
// テキストは '["e",{"pluribus":"unum"}]'
text = JSON.stringify(['e', {pluribus: 'unum'}], null, 't ');
// テキストは '[nt"e",nt{ntt"pluribus": "unum"nt}n]'
text = JSON.stringify([new Date()], function ( key, value) {
return this[key] instanceof Date ?
'Date(' this[key] ')' : value;<🎜> });
// text は '["Date(---current time---)"]'
JSON.parse(text, reviver)
このメソッドは JSON テキストを解析してオブジェクトを生成します
SyntaxError 例外がスローされる可能性があります。
オプションの reviver パラメータは、結果をフィルタリングして
変換できる関数です。各キーと値を受け取ります
そして、その戻り値が元の値の代わりに使用されます。
受け取ったものを返す場合、構造は変更されません。
未定義を返す場合、メンバーが削除されました。
例:
// テキストを解析します。 ISO 日付文字列のような値は
// Date オブジェクトに変換されます。
myData = JSON.parse(text, function (key, value) {
var a;
if (typeof value) === '文字列') {
a =
/^(d{4})-(d{2})-(d{2})T(d{2}):(d{2 }):(d{2}(?:.d*)?)Z$/.exec(value);
if (a) {
return new Date(Date.UTC( a[1], a[2] - 1、a[3]、a[4]、
a[5], a[6]));
}
}
戻り値;
} );
myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
var d;
if (typeof value === '文字列' &&
value.slice(0, 5) === 'Date(' &&
value.slice(-1) === ')') {
d = 新しい日付(値. lice(5, -1));
if (d) {
return d;
}
}
戻り値;
});
これはリファレンス実装です。コピー、変更、または
再配布は自由です。
*/
/*jslint evil: true、strict: false、regexp: false */
/*members "", "b" 、「t」、「n」、「f」、「r」、「」」、JSON、「\」、apply、
call、charCodeAt、getUTCDate、getUTCFull Year、getUTCHours、
getUTCMinutes、getUTCMonth、getUTCSeconds 、hasOwnProperty、join、
lastIndex、length、parse、prototype、push、replace、slice、stringify、
test、toJSON、toString、valueOf
*/
// 次の場合にのみ JSON オブジェクトを作成します。グローバル変数の作成を避けるために、クロージャ内に
// メソッドを作成します。
if (!this.JSON2)
{
this.JSON2 = {};
}
(function () {
"use strict";
function f(n) {
// 整数を少なくとも 2 桁になるようにフォーマットします。
return n < 10 ? '0' n : n;
}
if (typeof Date.prototype.toJSON !== 'function') {
Date.prototype.toJSON = function (key) {
return isFinite( this.valueOf()) ?
this.getUTCFull Year() '-'
f(this.getUTCMonth() 1) '-'
f(this.getUTCDate()) 'T'
f(this.getUTCHours()) ':'
f(this.getUTCMinutes()) ':'
f(this.getUTCSeconds()) 'Z' : null;
};
String.prototype.toJSON =
Number.prototype.toJSON =
Boolean.prototype.toJSON = function (key) {
return this.valueOf();
};
}
var cx = /[u0000u00adu0600-u0604u070fu17b4u17b5u200c-u200fu2028-u202fu2060-u206fufefffff0-uffff]/g,
エスケープ可能 = /[\"x00-x1fx7f-x9 fu00adu0600-u0604u070fu17b4u17b5u200c-u200fu2028-u202fu2060-u206fufefffff0-uffff]/g,
gap,
indent,
meta = { // 文字置換のテーブル
'b': '\b',
'\t',
'n ': '\n',
'f': '\f',
'r': '\r',
'"' : '\"',
'\': '\\'
},
rep;
function quote(string) {
escapable.lastIndex = 0;
return escapable.test(string) ?
'"文字列.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string' ? c :
'\u' ('0000' a.charCodeAt(0).toString(16)).slice(-4);
}) '"' :
'"' 文字列 '" ';
}
function str(key,holder) {
var i, // ループカウンター。
k, // メンバーキー
v, // メンバーの値
長さ、
マインド = ギャップ,
部分的,
value =holder[key];
if (value && typeof value === 'object' &&
typeof value.toJSON === '関数') {
value = value.toJSON(key);
}
if (typeof rep === 'function') {
value = rep.call(holder, key, value);
}
switch (typeof value) {
case 'string':
return quote(value);
case 'number':
return isFinite(value) ? String(value) : 'null';
case 'boolean':
case 'null':
return String(value);
case 'object':
if (!value) {
return 'null';
}
ギャップ = インデント;
部分 = [];
if (Object.prototype.toString.apply (値) === '[オブジェクト配列]') {
length = value.length;
for (i = 0; i < length; i = 1) {
partial[i] = str(i, value) || 'null';
}
v = 部分長 === 0 ? '[]' :
ギャップ? '[n' ギャップ
partial.join(',n' ギャップ) 'n'
']' :
'['partial.join(',') ']';
ギャップ = マインド;
return v;
}
if (rep && typeof rep === 'object') {
length = rep.length;
for (i = 0; i < length; i = 1) {
k = rep[i];
if (typeof k === 'string') {
v = str(k, value);
if (v) > partial.push(quote(k ) (gap ? ': ' : ':') v);
}
}
}
} else {
for (値の k) {
if (オブジェクト. hasOwnProperty.call(value, k)) {
v = str(k, value);
if (v) {
部分的。 Push(quote(k) (ギャップ ? ': ' : ': ') v);
}
}
}
}
v = 部分長 === 0 ? '{}' :
ギャップ? '{n' ギャップpartial.join(',n' ギャップ) 'n'
心 '}' : '{' Partial.join(',') '}';
ギャップ = 心;
return v;
}
}
if (typeof JSON2.stringify !== 'function') {
JSON2.stringify = function (value, replacer, space) {
var i ;
ギャップ = '';
indent = '';
if (typeof space === 'number') {
for (i = 0; i < space; i = 1) {
indent = ' ';
}
} else if (typeof space === 'string') {
indent = space;
}
rep = replacer;
if (replacer && typeof replacer !== 'function' &&
(type of replacer !== 'object' ||
typeof replacer.length !== '数値' )) {
throw new Error('JSON2.stringify');
}
return str('', {'': value});
};
}
if (typeof JSON2.parse !== 'function') {
JSON2.parse = function (text, reviver) {
var j;
function walk(holder, key) {
var k , v, value =holder[key];
if (value && typeof value === 'object') {
for (k in value) {
if (Object.hasOwnProperty. call(値, k)) {
v = walk(value, k);
if (v !== 未定義) {
value[k] = v;
} else {
値を削除[ k];
}
}
}
}
return reviver.call(holder, key, value);
}
text = String(text);
cx.lastIndex = 0;
if (cx.test(text)) {
text = text.replace(a) {
return '\u' > ('0000 ' a.charCodeAt(0).toString(16)).slice(-4);
});
}
if (/^[],:{}s]*$/
.test(text.replace(/\(?:["\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
.replace(/"[^"\nr]*"|true|false|null|-?d (?:.d*)?(?:[eE][ - ]?d )?/g, ']')
.replace(/(?:^|:|,)(?:s*[) /g, ''))) {
j = eval ( '(' text ')');
return of reviver === 'function'; 🎜>

2 番目、呼び出しページのコンテンツ
注: js ファイルを呼び出します。パスは自分で調整する必要があります。これを知らない場合は、読み続けないでください。 🎜>



コードをコピーします


コードは次のとおりです: