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

chr*_*ris 2 javascript arrays jquery json

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

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

tim*_*eam 5

这个问题出现在你脑海中的原因是因为你既不了解Javascript也不理解JSON.

Javascript数组始终是数值数组.JavaScript中没有关联数组,就像你在PHP中使用的那样json_decode(json, true);.当人们在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'
Run Code Online (Sandbox Code Playgroud)

关于JSON的最好之处是语法是对象文字符号的子集.这意味着JSON字符串本身是用于在Javascript中表示"关联数组"的有效代码."转换"不可能更简单,只是eval()代码将执行的字符串:

var my_data = eval(json_string);
Run Code Online (Sandbox Code Playgroud)

或者,使用jQuery.parseJSON()JSON.parse():

var my_data = jQuery.parseJSON(json_string);

var my_data = JSON.parse(json_string);
Run Code Online (Sandbox Code Playgroud)

人们之所以喜欢使用jQuery.parseJSON()JSON.parse()过度eval()是因为EVAL是邪恶的:

  1. 它慢了
  2. 它不检查JSON代码的有效性,使其怀疑能够注入攻击.

以上解释是否回答了您的问题?您可以在www.json.org找到有关JSON的更多信息.