JAVASCRIPT   36

json js

Guest on 17th July 2022 05:46:54 AM

  1. if (!this.JSON) {
  2.     this.JSON = {};
  3. }
  4. (function() {
  5.     function f(n) {
  6.         return n < 10 ? '0' + n : n;
  7.     }
  8.     if (typeof Date.prototype.toJSON !== 'function') {
  9.         Date.prototype.toJSON = function(key) {
  10.             return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' +
  11.                 f(this.getUTCMonth() + 1) + '-' +
  12.                 f(this.getUTCDate()) + 'T' +
  13.                 f(this.getUTCHours()) + ':' +
  14.                 f(this.getUTCMinutes()) + ':' +
  15.                 f(this.getUTCSeconds()) + 'Z' : null;
  16.         };
  17.         String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function(key) {
  18.             return this.valueOf();
  19.         };
  20.     }
  21.     var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
  22.         escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
  23.         gap, indent, meta = {
  24.             '\b': '\\b',
  25.             '\t': '\\t',
  26.             '\n': '\\n',
  27.             '\f': '\\f',
  28.             '\r': '\\r',
  29.             '"': '\\"',
  30.             '\\': '\\\\'
  31.         },
  32.         rep;
  33.  
  34.     function quote(string) {
  35.         escapable.lastIndex = 0;
  36.         return escapable.test(string) ? '"' + string.replace(escapable, function(a) {
  37.             var c = meta[a];
  38.             return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
  39.         }) + '"' : '"' + string + '"';
  40.     }
  41.  
  42.     function str(key, holder) {
  43.         var i, k, v, length, mind = gap,
  44.             partial, value = holder[key];
  45.         if (value && typeof value === 'object' && typeof value.toJSON === 'function') {
  46.             value = value.toJSON(key);
  47.         }
  48.         if (typeof rep === 'function') {
  49.             value = rep.call(holder, key, value);
  50.         }
  51.         switch (typeof value) {
  52.             case 'string':
  53.                 return quote(value);
  54.             case 'number':
  55.                 return isFinite(value) ? String(value) : 'null';
  56.             case 'boolean':
  57.             case 'null':
  58.                 return String(value);
  59.             case 'object':
  60.                 if (!value) {
  61.                     return 'null';
  62.                 }
  63.                 gap += indent;
  64.                 partial = [];
  65.                 if (Object.prototype.toString.apply(value) === '[object Array]') {
  66.                     length = value.length;
  67.                     for (i = 0; i < length; i += 1) {
  68.                         partial[i] = str(i, value) || 'null';
  69.                     }
  70.                     v = partial.length === 0 ? '[]' : gap ? '[\n' + gap +
  71.                         partial.join(',\n' + gap) + '\n' +
  72.                         mind + ']' : '[' + partial.join(',') + ']';
  73.                     gap = mind;
  74.                     return v;
  75.                 }
  76.                 if (rep && typeof rep === 'object') {
  77.                     length = rep.length;
  78.                     for (i = 0; i < length; i += 1) {
  79.                         k = rep[i];
  80.                         if (typeof k === 'string') {
  81.                             v = str(k, value);
  82.                             if (v) {
  83.                                 partial.push(quote(k) + (gap ? ': ' : ':') + v);
  84.                             }
  85.                         }
  86.                     }
  87.                 } else {
  88.                     for (k in value) {
  89.                         if (Object.hasOwnProperty.call(value, k)) {
  90.                             v = str(k, value);
  91.                             if (v) {
  92.                                 partial.push(quote(k) + (gap ? ': ' : ':') + v);
  93.                             }
  94.                         }
  95.                     }
  96.                 }
  97.                 v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
  98.                     mind + '}' : '{' + partial.join(',') + '}';
  99.                 gap = mind;
  100.                 return v;
  101.         }
  102.     }
  103.     if (typeof JSON.stringify !== 'function') {
  104.         JSON.stringify = function(value, replacer, space) {
  105.             var i;
  106.             gap = '';
  107.             indent = '';
  108.             if (typeof space === 'number') {
  109.                 for (i = 0; i < space; i += 1) {
  110.                     indent += ' ';
  111.                 }
  112.             } else if (typeof space === 'string') {
  113.                 indent = space;
  114.             }
  115.             rep = replacer;
  116.             if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {
  117.                 throw new Error('JSON.stringify');
  118.             }
  119.             return str('', {
  120.                 '': value
  121.             });
  122.         };
  123.     }
  124.     if (typeof JSON.parse !== 'function') {
  125.         JSON.parse = function(text, reviver) {
  126.             var j;
  127.  
  128.             function walk(holder, key) {
  129.                 var k, v, value = holder[key];
  130.                 if (value && typeof value === 'object') {
  131.                     for (k in value) {
  132.                         if (Object.hasOwnProperty.call(value, k)) {
  133.                             v = walk(value, k);
  134.                             if (v !== undefined) {
  135.                                 value[k] = v;
  136.                             } else {
  137.                                 delete value[k];
  138.                             }
  139.                         }
  140.                     }
  141.                 }
  142.                 return reviver.call(holder, key, value);
  143.             }
  144.             cx.lastIndex = 0;
  145.             if (cx.test(text)) {
  146.                 text = text.replace(cx, function(a) {
  147.                     return '\\u' +
  148.                         ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
  149.                 });
  150.             }
  151.             if (/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
  152.                 j = eval('(' + text + ')');
  153.                 return typeof reviver === 'function' ? walk({
  154.                     '': j
  155.                 }, '') : j;
  156.             }
  157.             throw new SyntaxError('JSON.parse');
  158.         };
  159.     }
  160. }());

Raw Paste


Login or Register to edit or fork this paste. It's free.