首頁 > web前端 > js教程 > 主體

淺析Js(Jquery)中,字串與JSON格式互相轉換的範例(直接運行實例)_jquery

WBOY
發布: 2016-05-16 17:29:29
原創
1211 人瀏覽過

首先,準備新建一個js檔。以下是JSON2.js的內容,把內容拷到js檔案中,以便呼叫:

複製程式碼 程式碼如下:

/*
    http://www.JSON.org/json2.js
    公共領域。
    沒有明示或暗示的保證。使用風險自負。
    請參閱 http://www.JSON.org/js.html
    部署前應縮小此程式碼。
    請參閱 http://javascript.crockford.com/jsmin。 html
    使用您自己的複製。從您無法控制的伺服器載入程式碼是極其不明智的。
    此檔案建立一個全域 JSON 對象,其中包含兩個方法:stringify
    和 parse。
        JSON.stringify(value, replacementr, space )
            value      
            替換符    一個選用參數,以決定物件
            它可以是
                        函數或字串陣列。
            空格       一個選用參數,並指定嵌套結構的縮排
         若省略,文字將
                        為 包裝,而額外的空格。如果它是一個數字,
                        它將指定於每個
   如果它是字串(例如 't' 或 ' '),
                        它包含在每個層級上所使用的字元字元。
            此方法從 JavaScript 值產生 JSON 文字。
             當物件找到 value 後,若物件包含 toJSON
            toJSON 方法不會序列化:它傳回由應序列化的名稱/值對錶示的
            值,
         toJSON 方法
            將傳遞與值相關的鍵,將
           
                                  // 將整數格式化至至少兩位數。
                        return n                     }
                   , this.getUTCFullYear()   '-'
   Month() 1) '-'
                         f(this.get UTCDate            f(this.getUTCHours ( ))     ':'
                                   f(this.getUTCSeconds())   'Z';
              方法。它將傳遞每個成員的
            鍵結和值,並將其綁定至包含的
            物件。從您的方法傳回的數值將會序列化
           。如果您的方法回傳未定義,則該成員將
            排除在序列化之外。
            如果replacer 參數是字串陣列,則它將
            用於選擇序列化的成員。它會過濾結果
           ,以可將具有取代陣列中所列出的鍵的成員使用
            字串化。
            沒有 JSON 表示形式的數值,例如未定義或
            函數,且不會被序列化。物件中的此類值將被刪除
           ;在陣列中,它們將被替換為 null。您可以使用
            替換函數替換為 JSON 值。
            JSON.stringify(undefined) 回傳未定義。
            選購的 space 參數產生
            值的字串
            若空格參數為非空白字串,則此字串將
            進行縮減。如果 space 參數是數字,則
            縮排將如此多空格。
            範例:
            text = JSON.stringify([) e",{"pluribus":"unum" }]'
            text = JSON.stringify(['e', {pluribus: 'unum'}], null, 't ');
  "pluribus": "unum"nt}n]'
            text = JSON.stringify([new Date()], function ( key, value) { ?
                    ' Date(' this[key] ')' : value;
            });
            // text is '["Date(---current time---)"]'
       物件或陣列。
            且可被拋出 SyntaxError 異常。
            可選擇的 reviver 參數是可過濾且
            轉換結果的函數。它接收每個鍵和值,
            並使用其回傳值來取代原始值。
            若它回復已接收的內容,結構則不會被修改。
            若它傳回未定義,則成員已刪除。
            範例:
            // 解析文字。看起來像 ISO 日期字串的值將
            // 轉換為 Date 物件。
            myData = JSON.parse(text, function (key, value) {
            if (typeof value === '字串') {
                    a =
/^ (d{4})-(d{2})-(d{2})T(d{2}):(d{2 }):(d{2}(?:.d*)?)Z $/.exec(value);
                    if (a) {
    C( a[1], a[2] - 1, a[3], a[4],
                            a[5], a[6]));                    myData = JSON.parse('["日期(09/ 09/2001)"]', function (key, value) {
                var d;
                           value.slice(0, 5) === '日期(' &&
                       value.slice(-1) === ')') {                       return d;
               }
                回值;
       );
    這是一個參考實作。您可以自由複製、修改或
    重新分發。
*/
/*jslint 邪惡: true, strict: false, regexp: false */
/*members "", "b" , "t", "n", "f", " r", """, JSON, "\", apply,
    呼叫, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
    getUTCMinutes, getUTCHours,
    我, length, parse, prototype, Push, Replace, slice, stringify,
    test, toJSON, toString, valueOf
*/
// 僅建立JSON 物件我們在閉包中建立
//方法以避免全域建立變項。 f(n) {
        // 將整數格式化為至少兩位數。 toJSON !== 'function') {
        Date.prototype.toJSON = function (key) {
                  this.getUTCFullYear()   '-'
f(this.getUTCMonth() 1) '-'
                 f(this.getUTCDate())      'T'
fthis.get               f(this.getUTCMinutes() )   ':'
                 f(this.getUTCSeconds())   'Z' : null;
      Number.prototype.toJSON =
        Boolean.prototype .toJSON = function (key) {
            return this.valueOf();
        u0604u070fu17b4u17b5u200c-u200fu2028-u202fu2060-u206fuffeffufff0-uffff]/g,
        可轉義= /[\"x00-x1fx7f-x9 fu00adu0600-u0604u070fu17b4u17b5u200c-u200fu2028-u17b4u17b5u200c-u200fu2028-u0        間隙,
        縮排,
        meta = {    //字號替換錶
            'b': '\b',
            '         'f': '\f',
'r': '\r',
            '"' : '\"',
            代表;
    function quote(string) {
        escapable.lastIndex = 0;
        return escapable.test(string) ?                return typeof c === 'string' ? c :
        6)).slice(-4);
}) '"' :
            '"' 字串'" ';
    }
    function str(key,holder) {
        var i,          // 循環計數器。
            k,          // 成員鍵。
            v,          // 成員值與位。
            長度,且
            心靈= 間隙,
    value =holder[key];
        if (value && typeof value === 'object' &&
       === '功能') {
            value = value.toJSON(key);
              value =rep.call(holder, key, value);
        }
        switch (typeof value) {
    );
        case 'number':
            return isFinite(value ) ? String(value) : 'null';
        case 'boolean':
        case 'null':            if (! value) {
                         部份= [];
            if (Object.prototype.toString.apply(value ) === ' [對象陣列]') {
                length = value.length;
                       partial[i] = str(i, value) || 'null';
                }
                       間隙? '[n' 間隙
                                          頭腦']' :
                 間隙=頭腦;
                的 v;
           
            if (rep && typeof rep === 'object') {
                for (i = 0; i                     k = 代表[i];
                   if (typeof k === 'string') {
                      v = str(k, value);
                        if (v) {
                           partial.push(quote(k ) (間隙? ': ' : ':') v);
                       }            } else {
                 if (Object.hasOwnProperty. call(value, k)) {
                        v = str(k, value if (v) {
                          會在中使用「上「)」() v.);
                       }
             }
            }
           v = 部份. 長度 === 0 ? '{}' :
               :'{'partial.join(',')'}' ;
           透明度=頭部值;
            return v;
  ify !== 'function') {
        JSON2.stringify = 函數( 、替換、符空格){
            var i ;
                   if (typeof space === 'number') {
                為(我= 0; i                    的縮排= ' ';
       } else if (typeof space === 'string') {
                縮排= 空格;
           }
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 ファイルを呼び出します。パスは自分で調整する必要があります。これを知らない場合は、読み続けないでください。 🎜>



コードをコピーします


コードは次のとおりです:
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板