【问题标题】:stringify doesn't works with my javascript array [duplicate]stringify 不适用于我的 javascript 数组 [重复]
【发布时间】:2014-03-23 01:25:06
【问题描述】:

我想使用 stringify 在 json 中编码我的 javascript 数组

params["margin_left"] = "fd";
params["text"] = "df";
params["margin_to_delete"] = "df";

console.info(params);

返回(Chrome 控制台):

[margin_left: "fd", text: "df", margin_to_delete: "df"]

但是当我打电话时:

console.info( JSON.stringify(params) );

我明白了

[]

有人知道为什么吗?

感谢

【问题讨论】:

  • 确保您将 params 定义为对象 var params = {};,从外观上看,错误可能是“params”被定义为一个数组(因此当字符串化时为空,因为通过添加的属性params["margin_left"] 不看,只看实际的数组值)
  • 那是一个对象。 And your code does work,假设您正确声明 params
  • 你是如何声明你的数组的?

标签: javascript stringify


【解决方案1】:

只是为了让我原来的评论成为答案。

问题是“params”被定义为一个数组,即。

var params = [];
params["margin_left"] = "fd";
params["text"] = "df";
params["margin_to_delete"] = "df";

这意味着当调用 stringify 时,它会返回它所拥有的 - 一个空白数组。 (javascript 不支持关联数组,上面的代码实际上是在为数组对象添加额外的属性,这些属性确实存在,尽管出于迭代/字符串化的目的将被忽略)

通过使其成为一个对象,一切都应该按预期工作

var params = {};
params["margin_left"] = "fd";
params["text"] = "df";
params["margin_to_delete"] = "df";

自从调用 stringify 以来,javascript 就知道你想要的属性了。

【讨论】:

    【解决方案2】:

    正如Carl 所指出的,您必须将参数定义为对象

    var 参数 = {};

    然后你可以使用stringify来转换成JSON String,像这样:

    console.info( JSON.stringify(params) );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 2015-08-28
      • 2017-05-23
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      相关资源
      最近更新 更多