JSON vs Array并且有一种方法可以将一个转换为另一个然后再转换回来

时间:2011-08-19 05:38:03

标签: javascript jquery arrays json

我在概念或现实中都知道,即​​使它们基本上是同一个。但是我知道使用JSON对象(截至撰写本文时至少)。改变给定对象集合中的数据并不是最容易的事情。当然我可能是错的,可能有一个简单的方法来完成所有JSON。这引出了我的实际问题。

我几乎完全使用JSON格式的对象。我需要经常更新大部分存储空间供以后使用。就个人而言,我希望每次都避免向服务器发送数据以及从服务器发送数据以重建JSON对象集。所以我想我是否想知道是否有类似于PHP的json_encode,json_decode?无论是本地JavaScript还是jQuery Lib。如果没有,我怎么能实现这样的事情因为我觉得(目前再次)使用数组和JSON对象更容易(如果我错了,请纠正我)。

2 个答案:

答案 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是邪恶的

  1. 慢一点
  2. 它不检查JSON代码的有效性,使其可以注入攻击。
  3. 以上解释是否回答了您的问题?您可以在www.json.org找到有关JSON的更多信息。

答案 1 :(得分:3)

所有现代浏览器都支持JSON.stringify()JSON.parse()

如果您必须支持旧浏览器,则可以使用jQuery的$.parseJSON()