JSON.parse
ini hanya berkas salinan yang saya tulis disini
Mengenai apa itu Polyfill, silahkan kunjungi tautan berikut Polyfill (programming)
(function (a, b) {
typeof define == "function" && define.amd ? define("json", ["exports"], b) : b(typeof exports == "object" && exports || this.JSON || (this.JSON = {}))
})(this, function (a) {
var b = {}.toString,
c = {}.hasOwnProperty,
d, e, f;
return e = typeof a.stringify == "function", f = typeof a.parse == "function",
function () {
var c = '{"result":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}',
d, g, h;
if (e) {
d = function () {
return 1
}, d.toJSON = d;
try {
switch (!1) {
case a.stringify(0) === "0":
case a.stringify(new 0..constructor) === "0":
case a.stringify(new "".constructor) == '""':
case a.stringify(b) === void 0:
case a.stringify(void 0) === void 0:
case a.stringify() === void 0:
case a.stringify(d) === "1":
case a.stringify([d]) == "[1]":
case a.stringify([void 0]) == "[null]":
case a.stringify(null) == "null":
case a.stringify([void 0, b, null]) == "[null,null,null]":
case a.stringify({
result: [d, true, false, null, "\0\b\n\f\r "]
}) == c:
case a.stringify(null, d) === "1":
case a.stringify([1, 2], null, 1) == "[\n 1,\n 2\n]":
case (d = new Date(-864e13)).getUTCFullYear() != -271821 || a.stringify(d) == '"-271821-04-20T00:00:00.000Z"':
case (d = new Date(864e13)).getUTCFullYear() != 275760 || a.stringify(d) == '"+275760-09-13T00:00:00.000Z"':
e = !1
}
} catch (i) {
e = !1
}
}
if (f) try {
if (a.parse("0") === 0 && !a.parse(!1)) {
h = a.parse(c);
if (f = h.result.length == 5 && h.result[0] == 1) {
try {
f = !a.parse('" "')
} catch (i) {}
if (f) try {
f = a.parse("+1") != 1 && a.parse("01") != 1
} catch (i) {}
}
}
} catch (i) {
f = !1
}
}(), typeof c != "function" && (c = function () {
var a, c = {},
d = c.constructor;
return (c.__proto__ = null, c.__proto__ = {
toString: 1
}, c).toString != b ? a = function e(a) {
var b = this.__proto__,
c = a in (this.__proto__ = null, this);
return this.__proto__ = b, c
} : a = function f(a) {
var b = (this.constructor || d).prototype;
return a in this && !(a in b && this[a] === b[a])
}, a
}()), d = function () {
function g() {
this.valueOf = 0
}
var a, d, e, f = 0;
g.prototype.valueOf = 0, a = new g;
for (d in a) c.call(a, d) && (f += 1);
return a = null, f ? f == 2 ? e = function (d, e) {
var f = {},
g = b.call(d) == "[object Function]",
h;
for (h in d)(!g || h != "prototype") && !c.call(f, h) && (f[h] = 1) && c.call(d, h) && e(h)
} : e = function (d, e) {
var f = b.call(d) == "[object Function]",
g, h;
for (g in d)(!f || g != "prototype") && c.call(d, g) && !(h = g === "constructor") && e(g);
(h || c.call(d, "constructor")) && e("constructor")
} : (a = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"], e = function (e, f) {
var g = b.call(e) == "[object Function]",
h, i;
for (h in e)(!g || h != "prototype") && c.call(e, h) && f(h);
for (i = a.length; i--;) h = a[i], c.call(e, h) && f(h)
}), e
}(), e || (a.stringify = function () {
function e(a, b) {
return b = "000000" + (b || 0), b.slice(b.length - a)
}
function f(b) {
var c = '"',
d = 0,
f;
for (; f = b.charAt(d); d += 1) c += '\\"\b\f\n\r '.indexOf(f) > -1 ? a[f] : f < " " ? "\\u00" + e(2, f.charCodeAt(0).toString(16)) : f;
return c + '"'
}
function g(a, h, i, j, k, l, m) {
var n = h[a],
o, p, q, r, s, t, u, v;
typeof n == "object" && n && (b.call(n) == "[object Date]" && !c.call(n, "toJSON") ? n > -1 / 0 && n < 1 / 0 ? (p = n.getUTCFullYear(), n = (p <= 0 || p >= 1e4 ? (p < 0 ? "-" : "+") + e(6, p < 0 ? -p : p) : e(4, p)) + "-" + e(2, n.getUTCMonth() + 1) + "-" + e(2, n.getUTCDate()) + "T" + e(2, n.getUTCHours()) + ":" + e(2, n.getUTCMinutes()) + ":" + e(2, n.getUTCSeconds()) + "." + e(3, n.getUTCMilliseconds()) + "Z") : n = null : typeof n.toJSON == "function" && (n = n.toJSON(a))), i && (n = i.call(h, a, n));
if (n === null) return "null";
o = b.call(n);
switch (o) {
case "[object Boolean]":
return "" + n;
case "[object Number]":
return n > -1 / 0 && n < 1 / 0 ? "" + n : "null";
case "[object String]":
return f(n)
}
if (typeof n == "object") {
for (t = m.length; t--;)
if (m[t] == n) throw TypeError("Cyclic structures cannot be serialized.");
m.push(n), q = [], u = l, l += k;
if (o == "[object Array]") {
for (s = 0, t = n.length; s < t; v || (v = !0), s++) r = g(s, n, i, j, k, l, m), q.push(r === void 0 ? "null" : r);
return v ? k ? "[\n" + l + q.join(",\n" + l) + "\n" + u + "]" : "[" + q.join(",") + "]" : "[]"
}
return d(j || n, function (a) {
var b = g(a, n, i, j, k, l, m);
b !== void 0 && q.push(f(a) + ":" + (k ? " " : "") + b), v || (v = !0)
}), v ? k ? "{\n" + l + q.join(",\n" + l) + "\n" + u + "}" : "{" + q.join(",") + "}" : "{}"
}
}
function h(a, c, d) {
var e = "",
f, h, i, j;
if (typeof c == "function" || typeof c == "object" && c)
if (b.call(c) == "[object Function]") f = c;
else if (b.call(c) == "[object Array]") {
h = {};
for (i = c.length; i--;) j = c[i], j && (b.call(j) == "[object String]" || b.call(j) == "[object Number]") && (h[j] = 1)
}
if (d != null && d !== "")
if (b.call(d) == "[object Number]") {
if ((d -= d % 1) > 0)
for (e = "", d > 10 && (d = 10); e.length < d;) e += " "
} else b.call(d) == "[object String]" && (e = d.length <= 10 ? d : d.slice(0, 10));
return g("$", {
$: a
}, f, h, e, "", [])
}
var a = {
"\\": "\\\\",
'"': '\\"',
"\b": "\\b",
"\f": "\\f",
"\n": "\\n",
"\r": "\\r",
" ": "\\t"
};
return h
}()), f || (a.parse = function () {
function e(a) {
this.source = a, this.index = 0
}
function f() {
for (var b = this.source, d = this.source.length, e, f, g, h, i; this.index < d;) {
e = b.charAt(this.index);
switch (e) {
case " ":
case "\r":
case "\n":
case " ":
this.index += 1;
break;
case "{":
case "}":
case "[":
case "]":
case ":":
case ",":
return this.index += 1, e;
case '"':
f = "@", this.index += 1;
while (this.index < d) {
e = b.charAt(this.index);
if (e < " ") throw SyntaxError("Unescaped control character in string.");
if (e == "\\") {
this.index += 1, e = b.charAt(this.index);
if ('\\"/btnfr'.indexOf(e) > -1) f += a[e], this.index += 1;
else {
if (e != "u") throw SyntaxError("Invalid escape sequence in string.");
g = this.index += 1;
for (h = this.index + 4; this.index < h; this.index += 1) {
e = b.charAt(this.index);
if (!(e >= "0" && e <= "9" || e >= "a" && e <= "f" || e >= "A" && e <= "F")) throw SyntaxError("Invalid Unicode escape sequence in string.")
}
f += c("0x" + b.slice(g, this.index))
}
} else {
if (e == '"') break;
f += e, this.index += 1
}
}
if (b.charAt(this.index) == '"') return this.index += 1, f;
throw SyntaxError("Unterminated string.");
default:
g = this.index, e == "-" && (i = !0, e = b.charAt(this.index += 1));
if (e >= "0" && e <= "9") {
if (e == "0" && (e = b.charAt(this.index + 1), e >= "0" && e <= "9")) throw SyntaxError("Illegal octal literal.");
i = !1;
for (; this.index < d && (e = b.charAt(this.index), e >= "0" && e <= "9"); this.index += 1);
if (b.charAt(this.index) == ".") {
h = this.index += 1;
for (; h < d && (e = b.charAt(h), e >= "0" && e <= "9"); h += 1);
if (h == this.index) throw SyntaxError("Illegal trailing decimal.");
this.index = h
}
e = b.charAt(this.index);
if (e == "e" || e == "E") {
e = b.charAt(this.index += 1);
if (e == "+" || e == "-") this.index += 1;
for (h = this.index; h < d && (e = b.charAt(h), e >= "0" && e <= "9"); h += 1);
if (h == this.index) throw SyntaxError("Illegal empty exponent.");
this.index = h
}
return +b.slice(g, this.index)
}
if (i) throw SyntaxError("Unexpected `-`.");
if (e == "t" && b.slice(this.index, this.index + 4) == "true") return this.index += 4, !0;
if (e == "f" && b.slice(this.index, this.index + 5) == "false") return this.index += 5, !1;
if (e == "n" && b.slice(this.index, this.index + 4) == "null") return this.index += 4, null;
throw SyntaxError("Unrecognized token.")
}
}
return "$"
}
function g(a) {
var b, c, d;
if (a == "$") throw SyntaxError("Unexpected end-of-file.");
if (typeof a == "string") {
if (a.charAt(0) == "@") return a.slice(1);
switch (a) {
case "[":
b = [];
for (;; c || (c = !0)) {
a = this.lex();
if (a == "]") break;
if (c) {
if (a != ",") throw SyntaxError("A comma (`,`) must separate the previous array element from the next.");
a = this.lex();
if (a == "]") throw SyntaxError("Unexpected trailing `,` in array literal.")
}
if (a == ",") throw SyntaxError("Unexpected `,` in array literal.");
b.push(this.get(a))
}
return b;
case "{":
b = {};
for (;; c || (c = !0)) {
a = this.lex();
if (a == "}") break;
if (c) {
if (a != ",") throw SyntaxError("A comma (`,`) must separate the previous object member from the next.");
a = this.lex();
if (a == "}") throw SyntaxError("Unexpected trailing `,`. in object literal.")
}
if (a == ",") throw SyntaxError("Unexpected `,` in object literal.");
if (typeof a != "string" || a.charAt(0) != "@") throw SyntaxError("Object property names must be double-quoted strings.");
if (this.lex() != ":") throw SyntaxError("A single colon (`:`) must separate each object property name from the value.");
b[a.slice(1)] = this.get(this.lex())
}
return b
}
throw SyntaxError("Expected `[` or `{`.")
}
return a
}
function h(a, c, e) {
var f = a[c],
g, i;
if (typeof f == "object" && f)
if (b.call(f) == "[object Array]")
for (g = f.length; g--;) i = h(f, g, e), i === void 0 ? f.splice(g, 1) : f[g] = i;
else d(f, function (a) {
var b = h(f, a, e);
b === void 0 ? delete f[a] : f[a] = b
});
return e.call(a, c, f)
}
function i(a, c) {
var d = new e("" + a),
f = d.get(d.lex());
if (d.lex() != "$") throw SyntaxError("Expected end-of-file.");
return c && b.call(c) == "[object Function]" ? h({
$: f
}, "$", c) : f
}
var a = {
"\\": "\\",
'"': '"',
"/": "/",
b: "\b",
t: " ",
n: "\n",
f: "\f",
r: "\r"
},
c = "".constructor.fromCharCode;
return e.prototype.lex = f, e.prototype.get = g, i
}()), a
})
Posting Komentar