【问题标题】:JSON.stringify multidimensional [duplicate]JSON.stringify 多维
【发布时间】:2018-11-24 08:53:22
【问题描述】:

我正在尝试使用 JSON.stringify 将 javascript 对象发送到 PHP,但我找不到解决方案。这是我所拥有的示例:

var small_array = [],
    final_array = [];

small_array["ok"] = "ok";
small_array["not_ok"] = "not_ok";

final_array.push(small_array);

console.log(JSON.stringify(final_array));

输出为“[[]]”

对此有任何指导吗?谢谢

【问题讨论】:

  • 为什么不使用对象而不是数组?
  • 为什么要取数组?
  • 如果可能的话,我更有兴趣为这种情况找到解决方案。

标签: javascript jquery stringify


【解决方案1】:

javascript 中没有关联数组。它们被称为对象:

const smallObject = {
   ok: "not ok",
   not_ok: "ok"
};

const finalArray = [smallObject];

console.log(JSON.stringify(finalArray));

【讨论】:

    【解决方案2】:

    您正在向数组添加非数组条目属性。这在 JavaScript 中很好,但 JSON 没有数组中非数组条目属性的概念(JSON 数组只是有序序列,而在 JavaScript 中,数组是成熟的对象,可为某些类型的属性提供特殊处理——更多内容请参阅我的 [古代] 博文 A Myth of Arrays)。

    对于那些属性名称(键),您需要一个普通对象,而不是数组:

    var obj         = {}, // Note {}, not []
        final_array = [];
    
    obj["ok"] = "ok";
    obj["not_ok"] = "not_ok";
    
    final_array.push(obj);
    
    console.log(JSON.stringify(final_array));

    【讨论】:

    • [ancient] 哈哈 :)
    • 谢谢,我知道了。
    【解决方案3】:

    javacript 中的对象是这样定义的 var obj = {}

    var small_array = {},
    final_array = {};
    
    small_array["ok"] = "ok";
    small_array["not_ok"] = "not_ok";
    
    final_array = (small_array);
    
    console.log(JSON.stringify(final_array));
    VM1623:9 {"ok":"ok","not_ok":"not_ok"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-08
      • 2011-10-08
      • 2014-01-13
      • 2011-11-07
      • 2014-01-21
      • 2014-09-08
      • 1970-01-01
      相关资源
      最近更新 更多