我在概念或现实中都知道,即使它们基本上是同一个。但是我知道使用JSON对象(截至撰写本文时至少)。改变给定对象集合中的数据并不是最容易的事情。当然我可能是错的,可能有一个简单的方法来完成所有JSON。这引出了我的实际问题。
我几乎完全使用JSON格式的对象。我需要经常更新大部分存储空间供以后使用。就个人而言,我希望每次都避免向服务器发送数据以及从服务器发送数据以重建JSON对象集。所以我想我是否想知道是否有类似于PHP的json_encode,json_decode?无论是本地JavaScript还是jQuery Lib。如果没有,我怎么能实现这样的事情因为我觉得(目前再次)使用数组和JSON对象更容易(如果我错了,请纠正我)。
答案 0 :(得分:5)
这个问题出现在你脑海中的原因是因为你不能理解Javascript或JSON。
Javascript数组始终是数值数组。 JavaScript中没有像使用json_decode(json, true);
在PHP中获得的关联数组。当人们在JavaScript中讨论关联数组时,他们实际上使用JavaScript对象及其属性,即
var my_so_called_array = {};
my_so_called_array['first_item'] = 'hello world';
alert(my_so_called_array['first_item']); // 'hello world'
alert(my_so_called_array.first_item); // also 'hello world'
关于JSON的最好之处是语法是对象文字符号的子集。这意味着JSON字符串本身是用于在Javascript中表示“关联数组”的有效代码。 “转换”不可能更简单,只需eval()
字符串代码即可:
var my_data = eval(json_string);
或者,使用jQuery.parseJSON()
或JSON.parse()
:
var my_data = jQuery.parseJSON(json_string);
var my_data = JSON.parse(json_string);
人们更喜欢使用jQuery.parseJSON()
或JSON.parse()
而不是eval()
的原因是因为 eval是邪恶的:
以上解释是否回答了您的问题?您可以在www.json.org找到有关JSON的更多信息。
答案 1 :(得分:3)
所有现代浏览器都支持JSON.stringify()
和JSON.parse()
。
如果您必须支持旧浏览器,则可以使用jQuery的$.parseJSON()
。