【问题标题】:How to convert Array into JSON [closed]如何将数组转换为 JSON [关闭]
【发布时间】:2014-02-19 15:43:28
【问题描述】:

一个简单的问题,如果我有的话

var obj = [ [contacts : [ name : "name1" , number : "number1" ] ], 
[contacts : [ name: "name2" , number : "number2" ] ]  ... ];

我想将其转换为单个 Json 字符串。

如何做到这一点?

【问题讨论】:

  • 您的“Json 对象”无效。
  • JSON 是一种字符串格式,用于表示一个对象,而不是一个“对象”本身。
  • 你的意思是JSON字符串吗?
  • 你不能,也不应该。数组是存储您拥有的数据的正确数据类型。
  • 这是 X/Y 情况吗?他需要做 X,并尝试过 Y,但 Y 不工作并想要修复 Y,而我们真的应该修复 X?他从服务器获取 json 并转换为数组,他需要数组采用不同的格式才能与一些任意插件一起使用,所以他试图...制作一个不同格式的 json 字符串而不是更改格式对象/数组。

标签: javascript jquery json


【解决方案1】:

为什么您提出的结果无效

您建议的结果无效。它永远不会存在。

对象(如大括号{...} 所示)本质上是字典。它们将键映射到值。因此,不指定任何键(如您所做的)是无效的。

您要查找的数据结构是数组,用方括号 ([...]) 表示。

您当然可以通过在字典中指定编号的索引来模仿类似数组的行为:

var obj = {
  0: firstElement,
  1: secondElement
};

// the same as*
var arr = [firstElement, secondElement];

*) 请注意,objarr 不等价!虽然数组是对象,但原始形式的对象不提供数组函数,例如obj.length 将未定义。

JSON != 对象文字表示法

您似乎将术语 JSON 与您在 JavaScript 代码中使用的语法混淆了,这种语法称为 Object literal notation

JSON
它是一种数据格式。

{
  "key": "value"
}
// or
[
  "first",
  "second"
]
...

需要在键周围加上双引号。有关语法的更多信息,请咨询http://json.org

对象文字
这些嵌入在 JavaScript 代码中。

// JS code
alert("Test, this is JS code"); // sample

var obj = {
  1: "abc",
  2: ["first", "second"]
};

在这种情况下,键周围的双引号是可选的。

【讨论】:

    【解决方案2】:

    试试这个:

    var myJsonString = JSON.stringify(yourArray);
    

    【讨论】:

    • 为什么建议将他的 var 字符串化的答案如此被否决?我错过了这个问题吗?这正是他所要求的,即使他不明白由此产生的结果..
    • @KevinB 显然我们不同意所问的问题。就我而言,他想完全按照他的要求做:将数组转换为对象。他不想创建仍然代表数组的字符串。
    • 我们应该得到作者的澄清并更正问题,或者关闭它。
    • 现在他似乎在要求一个 json 字符串。
    • @linstantnoodles 老实说,我通常想拒绝那些只是“试试这个:”的答案,然后是代码,因为我不认为它们真的那么有用。如果他们也未能回答所要求的内容——即使这是不可能的——那么我肯定会这样做。也就是说,由于问题已经得到澄清(在一定程度上),我已经推翻了我的反对意见;如果他们确实想要生成一个字符串,那么这是正确的方法。
    猜你喜欢
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多