Javascript和JSON

Eti*_*uis 1 javascript json

这将有效:

var json = { 'items': [{ 'id': 72, 'quantity': 1, 'format': '90ml' }, { 'id': 72, 'quantity': 4, 'format': '70ml'}] }
alert(json.items[1].id);
Run Code Online (Sandbox Code Playgroud)

这不起作用:

var json = $.cookie('json_string');
alert(json.items[1].id);
Run Code Online (Sandbox Code Playgroud)

cookie中的json_string与示例#1中的json_string完全相同.在鬼混之后,我意识到我需要这样做才能使它工作:

    eval("var json = " + $.cookie("json_cart"));
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?这似乎是一个黑客,我在尝试进行这个javascript/c#json通信时面临一些挑战,我觉得这很容易.无论如何.至少我现在跑了.

hay*_*lem 12

这是作者

要将字符串反序列化为对象,并假设您以现代浏览器为目标,您可以使用本机函数执行以下操作:

var myObj = JSON.parse($.cookie('json_string'));
Run Code Online (Sandbox Code Playgroud)

或者您可以从官方JSON网站导入json2.js并使用与上面相同的行.

或者,如subhaze所述,您可以完全使用jQuery-y并使用:

var myObj = jQuery.parseJSON('{"name":"John"}');
Run Code Online (Sandbox Code Playgroud)

关于URL编码的注意事项

如果字符串是在cookie中编码的,那么你需要先解码它,使用decodeURIComponent()如下:

var myObj = JSON.parse(decodeURIComponent($.cookie('json_string')))
Run Code Online (Sandbox Code Playgroud)

关于引用键的注释

您的JSON实际上是无效的,因为它需要双引号键.您应该使用双引号(")来包围您的键和字符串值.

核实

要快速检查JSON的有效性,请尝试JSONLint.


你的问题与其他问题非常相似.因此,在将来,请务必先检查JSON标记搜索问题,检查是否存在类似问题.