从关联数组创建JSON字符串。JavaScript

从关联数组创建JSON字符串。JavaScript,javascript,json,Javascript,Json,我无法将JavaScript中的关联数组转换为JSON对象。 问题如下:我有一个索引为字符串的数组,当我使用JSON.stringify(myArray)时,它返回[]。如果我将数组构建为一个对象,问题就解决了,并返回{“key1”:“value1”,“key2”:“value2”},但转换是不同的。我希望使用数组对象进行转换,如[“key1”:“value1”,“key2”:“value2”]。 当我的索引是数字时,它也可以正常工作,但当索引是字符串时,它就不能正常工作 我怎么能做到?我在论坛

我无法将JavaScript中的关联数组转换为JSON对象。 问题如下:我有一个索引为字符串的数组,当我使用
JSON.stringify(myArray)
时,它返回
[]
。如果我将数组构建为一个对象,问题就解决了,并返回
{“key1”:“value1”,“key2”:“value2”}
,但转换是不同的。我希望使用数组对象进行转换,如
[“key1”:“value1”,“key2”:“value2”]
。 当我的索引是数字时,它也可以正常工作,但当索引是字符串时,它就不能正常工作

我怎么能做到?我在论坛上搜索了答案,发现了很多信息,但不是这样的

我给你举个例子

var prueba = new Array();
prueba["key1"] = "value1";
prueba["key2"] = "value2";
当我把它串起来时,它不起作用

var prueba = new Object();
prueba["key1"] = "value1";
prueba["key2"] = "value2";
这很好,但是结果不是用其他语言反序列化的(相信我)

这正是我想要的,但有数字索引。

为什么不呢

var input = '{"key1":"value1","key2":"value2"}',
    output = input.replace(/^{(.*)}$/, '[$1]');

console.log(output); // >> ["key1":"value1","key2":"value2"]

这里的
input
是一个普通的
JSON.stringify()
的结果,
output
是正则表达式
input

使用对象是唯一的方法。。。你说很难用其他语言对其进行反序列化是没有意义的。JSON就是JSON。如果您的语言有一个JSON解析器,它将用该语言创建适当的数据结构。您想要的结果,
[“key1”:“value1”,“key2”:“value2”]
不是JSON。不能使
JSON.stringify
生成无效的JSON。如果你真的想要这种格式,那么你必须创建自己的序列化程序。也许这会有帮助:问题是如果我用JAVA映射一个结构,从JavaScript检索JSON数组。。。该语言需要的是对象,而不是数组。我认为用JavaScript比用JAVA更容易修复,但是。。。如果你是对的,我必须用JAVA更好地解析它!如果我能把输出字符串化。。。那太好了!但Felix是对的,[“key1”:“value1”]不是正确的JSON字符串。可能我想要的是{[“key1”,“value1”]},但是使用RegExp会很容易。谢谢是的,让
output=input.replace(/^{(.*)}$/,“{[$1]}”)
var input = '{"key1":"value1","key2":"value2"}',
    output = input.replace(/^{(.*)}$/, '[$1]');

console.log(output); // >> ["key1":"value1","key2":"value2"]