首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用stringify将javascript关联数组转换为json对象,反之亦然

使用stringify将javascript关联数组转换为json对象,反之亦然
EN

Stack Overflow用户
提问于 2011-08-17 15:15:38
回答 4查看 47.8K关注 0票数 24

我有一个javascript关联数组,如下所示

代码语言:javascript
复制
 var my_cars= new Array()
 my_cars["cool"]="Mustang";
 my_cars["family"]="Station Wagon";
 my_cars["big"]="SUV";

我想用Stringify把它转换成json对象。我想知道转换后的json对象是什么样子的。

另外,当我拥有这个对象时,我如何将它再次转换回关联数组。

EN

回答 4

Stack Overflow用户

发布于 2011-08-17 15:23:53

首先,通过将my_cars设置为数组并对其进行字符串化,您不会得到您期望的结果。

代码语言:javascript
复制
var my_cars= new Array()
my_cars["cool"]="Mustang";
my_cars["family"]="Station Wagon";
my_cars["big"]="SUV";
alert(JSON.stringify(my_cars));

这会向[]发出警报。

您想要的是从{}开始

代码语言:javascript
复制
var my_cars= {};
my_cars["cool"]="Mustang";
my_cars["family"]="Station Wagon";
my_cars["big"]="SUV";
alert(JSON.stringify(my_cars));

此警报

代码语言:javascript
复制
{"cool":"Mustang","family":"Station Wagon","big":"SUV"}

要从字符串中取回对象,请使用JSON.parse()

代码语言:javascript
复制
var s = JSON.stringify(my_cars);
var c = JSON.parse(s);
alert(c.cool);

这会提醒“野马”。

请参阅http://jsfiddle.net/Y2De9/

票数 61
EN

Stack Overflow用户

发布于 2016-10-16 18:03:56

不是,但是用户想使用数组而不是json。

普通的JavaScript数组是用来保存带有数字索引的数据的。您可以将命名键填充到它们中(当您想要存储有关包含正常的、有序的、数字索引的数据的数组的元数据时,这可能很有用),但这不是设计它们的目的。JSON数组数据类型不能在数组上具有命名键。

如果需要命名键,请使用对象,而不是数组。

*source

代码语言:javascript
复制
var test = [];           // Object
test[0] = 'test';        //this will be stringified

现在,如果您希望数组中的键值对

代码语言:javascript
复制
test[1] = {};          // Array
test[1]['b']='item';
var json = JSON.stringify(test);

输出

代码语言:javascript
复制
"["test",{"b":"item"}]"

因此您可以对数组使用索引,因此也可以

代码语言:javascript
复制
var my_cars= [];
my_cars[0]={};
my_cars[0]["cool"]="Mustang";
my_cars[1]={};
my_cars[1]["family"]="Station Wagon";
my_cars[2]={};
my_cars[2]["big"]="SUV";
console.log(JSON.stringify(my_cars));

输出

代码语言:javascript
复制
"[{"cool":"Mustang"},{"family":"Station Wagon"},{"big":"SUV"}]"
票数 5
EN

Stack Overflow用户

发布于 2011-08-17 15:22:31

将我的评论移动到答案中,这样我就可以向您展示一个代码示例。

这些类型的数组是javascript中的禁忌。您应该只将对象用于如下所示的非数字键。数组索引应为数字。Javascript对象可以对键使用任意值(如您的示例所示)。数组碰巧“看起来”是有效的,因为数组本身就是对象,但你不会发现普通的Array方法会对它们起作用。例如,请看下面的代码示例。

代码语言:javascript
复制
var my_cars= new Array()
my_cars["cool"]="Mustang";
my_cars["family"]="Station Wagon";
my_cars["big"]="SUV";
alert(my_cars.length);  // alerts 0

您只向基础对象添加了属性,而没有向Array实际添加元素。为此,您应该使用对象,而不是数组。Javascript实际上没有关联数组。它有一个对象,它的属性通常可以像在其他语言中使用Associate Array一样使用。但是,它是一个对象,而不是数组。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7089118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档