Gemasoft Asked: 2020-12-24 03:21:35 +0800 CST 2020-12-24 03:21:35 +0800 CST 2020-12-24 03:21:35 +0800 CST 如何将 JSON 字符串转换为 JavaScript 中的对象? 772 如果我有一个具有以下值的字符串变量: var myString = "{'nombre':'juan'}"; 如何在 JavaScript 中将字符串转换为 JSON 对象? javascript 4 Answers Voted Best Answer Carlos Muñoz 2020-12-24T05:24:45+08:002020-12-24T05:24:45+08:00 假设我们的 JSON 语法正确,您的字符串: var s = '{"nombre":"juan"}'; 它已经是 JSON 了!,您不需要任何转换。 JSON 表示法是一种将 JavaScript 对象序列化为字符串的方法,因此您已经有了 JSON。 注意{"nombre":"juan"}:您可以在此页面中编写它(不带 s 变量且不带单引号:): Json Parser Online以验证它。 现在,如果您想将其转换为 JavaScript 对象。 var o = JSON.parse(s); 并将其返回给 JSON: var json = JSON.stringify(o); 最后,正如@ratlab 提到的,如果您的浏览器不支持该对象,JSON您可以使用json2.js或JSON 3之类的库 或者直接在你的代码中使用这个来自 MDN 的 polyfill : if (!window.JSON) { window.JSON = { parse: function(sJSON) { return eval('(' + sJSON + ')'); }, stringify: (function () { var toString = Object.prototype.toString; var isArray = Array.isArray || function (a) { return toString.call(a) === '[object Array]'; }; var escMap = {'"': '\\"', '\\': '\\\\', '\b': '\\b', '\f': '\\f', '\n': '\\n', '\r': '\\r', '\t': '\\t'}; var escFunc = function (m) { return escMap[m] || '\\u' + (m.charCodeAt(0) + 0x10000).toString(16).substr(1); }; var escRE = /[\\"\u0000-\u001F\u2028\u2029]/g; return function stringify(value) { if (value == null) { return 'null'; } else if (typeof value === 'number') { return isFinite(value) ? value.toString() : 'null'; } else if (typeof value === 'boolean') { return value.toString(); } else if (typeof value === 'object') { if (typeof value.toJSON === 'function') { return stringify(value.toJSON()); } else if (isArray(value)) { var res = '['; for (var i = 0; i < value.length; i++) res += (i ? ', ' : '') + stringify(value[i]); return res + ']'; } else if (toString.call(value) === '[object Object]') { var tmp = []; for (var k in value) { if (value.hasOwnProperty(k)) tmp.push(stringify(k) + ': ' + stringify(value[k])); } return '{' + tmp.join(', ') + '}'; } } return '"' + value.toString().replace(escRE, escFunc) + '"'; }; })() }; } 注意:现在我对上面提到的 3 个库和 pollyfill 进行了更多调查,我只推荐json2.jsJSON 3。原因是 pollyfill 只是一个可能不受支持的代码示例,尽管它是原始库,但它是一个旧库,有一些错误并且不符合当前标准。JSON 3 文档的 JSON 2 更改部分中的更多信息JSON 3json2.js devconcept 2020-12-24T09:15:15+08:002020-12-24T09:15:15+08:00 在 JavaScript 中有 2 种方法可以将带有JSON 表示法的字符串转换为对象,JSON.parse反之亦然JSON.stringify: var obj1 = 'null'; var obj2 = '1'; var obj3 = '"string"'; var obj4 = '[1,2,3]'; var obj5 = '{"double_quote": "any object"}' console.log(JSON.parse(obj1)); => null console.log(JSON.parse(obj2)); => 1 console.log(JSON.parse(obj3)); => "string" console.log(JSON.parse(obj4)); => [1,2,3] console.log(JSON.parse(obj5)); => {"double_quote": "any object"} console.log(JSON.stringify(obj3)) => "\"string\"" 您应该记住null,, true,false也是有效的 JSON 值,并且字符串的开头和结尾必须包含双引号才能被视为这样,否则它们将被解释为其他数据类型。正则表达式和函数不像 JSON 是一种数据交换格式,后者被认为是“代码”。 你可以在这里找到完整的格式规范 ,也可以在json.org页面上找到。 大多数浏览器 Chrome、Firefox 3.5+、Internet Explorer 8+、Opera 10.5+ 和 Safari 4.0+ 都支持这些功能。 如果不存在,您可以使用这种格式的创建者Douglas Crockford本人基于现有 JavaScript 结构制作的JSON2库。 Chofoteddy 2020-12-24T11:30:19+08:002020-12-24T11:30:19+08:00 考虑到您的初始化代码: var myString = "{'nombre':'juan'}"; 解决方案 语言内在工具的使用:JSON.parse() var objeto = JSON.parse(myString); MDN 文档告诉我们: JSON.parse(text[, reviver]):JSON.parse() 方法将文本字符串解析为 JSON,可选择转换解析产生的值。 使用“JSON 对象”和“JSON 文本”这个词可能是一个问题,但实际上它是如此普遍,以至于当它以这种方式表达时,它为消息的接收者提供了一个完整的上下文,而不仅仅是使用 JSON。 这可以在页面上看到:JavaScript 中的 JSON。 var myJSONObject ... 将 JSON 文本转换为对象 ... patovega 2020-12-24T04:30:02+08:002020-12-24T04:30:02+08:00 添加到@dabbbb 的答案。 哪些浏览器喜欢: ie8向前。 火狐 铬合金 他们对 JSON 有原生支持,如果您需要在旧浏览器中执行此操作,则需要包含JSON2
假设我们的 JSON 语法正确,您的字符串:
它已经是 JSON 了!,您不需要任何转换。
JSON 表示法是一种将 JavaScript 对象序列化为字符串的方法,因此您已经有了 JSON。
现在,如果您想将其转换为 JavaScript 对象。
并将其返回给 JSON:
最后,正如@ratlab 提到的,如果您的浏览器不支持该对象,
JSON
您可以使用json2.js或JSON 3之类的库或者直接在你的代码中使用这个来自 MDN 的 polyfill :
在 JavaScript 中有 2 种方法可以将带有JSON 表示法的字符串转换为对象,
JSON.parse
反之亦然JSON.stringify
:您应该记住
null
,,true
,false
也是有效的 JSON 值,并且字符串的开头和结尾必须包含双引号才能被视为这样,否则它们将被解释为其他数据类型。正则表达式和函数不像 JSON 是一种数据交换格式,后者被认为是“代码”。你可以在这里找到完整的格式规范 ,也可以在json.org页面上找到。
大多数浏览器 Chrome、Firefox 3.5+、Internet Explorer 8+、Opera 10.5+ 和 Safari 4.0+ 都支持这些功能。
如果不存在,您可以使用这种格式的创建者Douglas Crockford本人基于现有 JavaScript 结构制作的JSON2库。
考虑到您的初始化代码:
解决方案
语言内在工具的使用:JSON.parse()
MDN 文档告诉我们:
使用“JSON 对象”和“JSON 文本”这个词可能是一个问题,但实际上它是如此普遍,以至于当它以这种方式表达时,它为消息的接收者提供了一个完整的上下文,而不仅仅是使用 JSON。
这可以在页面上看到:JavaScript 中的 JSON。
添加到@dabbbb 的答案。
哪些浏览器喜欢:
他们对 JSON 有原生支持,如果您需要在旧浏览器中执行此操作,则需要包含JSON2