Javascript JSON vs Array,有没有办法将一个转换为另一个,然后再转换回来

Javascript JSON vs Array,有没有办法将一个转换为另一个,然后再转换回来,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我知道无论是在概念上,还是在现实中,它们本质上都是一个整体。但是,我知道如何使用JSON对象(至少在撰写本文时是这样)。改变给定对象集中的数据并不是最容易的事情。当然,我可能是错的,可能有一个简单的方法来做这一切。这就引出了我真正的问题 我几乎完全使用JSON格式的对象。其中大部分我需要经常更新以备以后使用。就我个人而言,我希望避免每次都通过向服务器发送数据和从服务器发送数据来重建JSON对象集。所以我想我想知道是否有一个类似PHP的json_编码,json_解码的等价物?本机使用JavaScr

我知道无论是在概念上,还是在现实中,它们本质上都是一个整体。但是,我知道如何使用JSON对象(至少在撰写本文时是这样)。改变给定对象集中的数据并不是最容易的事情。当然,我可能是错的,可能有一个简单的方法来做这一切。这就引出了我真正的问题


我几乎完全使用JSON格式的对象。其中大部分我需要经常更新以备以后使用。就我个人而言,我希望避免每次都通过向服务器发送数据和从服务器发送数据来重建JSON对象集。所以我想我想知道是否有一个类似PHP的json_编码,json_解码的等价物?本机使用JavaScript或通过jQuery库。如果没有,我怎么能实现这样的目标呢?因为我觉得(现在)使用array的vs JSON对象要容易得多(如果我错了,请纠正我)。

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


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

这个问题之所以会出现在您的脑海中,是因为您对Javascript或JSON都不够了解

Javascript数组始终是数字数组。JavaScript中没有像PHP中使用
json\u 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'
JSON的一个优点是语法是对象文字符号的子集。这意味着JSON字符串本身是Javascript中表示“关联数组”的有效代码。“转换”再简单不过了,只要
eval()

var my_data = eval(json_string);
或者,使用
jQuery.parseJSON()
JSON.parse()

人们之所以喜欢使用
jQuery.parseJSON()
JSON.parse()
而不是
eval()
是因为eval是邪恶的

  • 慢一点
  • 它没有检查JSON代码的有效性,使其怀疑能够进行注入攻击

  • 以上解释是否回答了你的问题?你可以在www.JSON.org上找到更多关于JSON的信息。

    应该是
    JSON.parse
    ?@K.B我的意思是
    JSON.decode()
    应该是
    JSON.parse()
    :@Digital Plane:你说得对。现在已经很晚了,而且我还没想清楚。Updated.JSON和数组在概念上或现实中并不相同。JSON和对象也不一样。JSON是序列化为字符串的对象数据,可以表示也可以不表示数组对象。在JavaScript中,并非所有对象都是数组,也不是所有对象都可以序列化为JSON。修改JavaScript对象的数据已经很容易了:使用数组只会在数字索引有意义的地方更容易。修改JSON不是通常的做法:您需要对其进行反序列化,然后处理结果对象。为什么您觉得需要向服务器发送数据或从服务器发送数据来重建对象?
    var my_data = jQuery.parseJSON(json_string);
    
    var my_data = JSON.parse(json_string);