如何将Javascript数组转换为JSON字符串

时间:2014-08-01 12:59:18

标签: javascript json

我有一个名为values的数组,其中包含此数据

var values=new Array();
values.push("english":"http://www.test.in/audio_ivrs/sr_listenglishMSTR001.wav");
values.push("kannada":"http://www.test.in/audio_ivrs/sr_listfrenchMSTR001.wav");

当我执行JSON.stringify(values)时,我得到带方括号的值,但是我需要一个JSON字符串,如下所示,并在第一行附加了urllist。

{
   "urlList":{
      "english":"http://www.test.in/audio_ivrs/sr_listenglishMSTR001.wav",
      "kannada":"http://www.test.in/audio_ivrs/sr_listfrenchMSTR001.wav"
   }
}

1 个答案:

答案 0 :(得分:4)

您定义的代码会给您带来错误。这不是有效的JavaScript;你不能像这样创建一个数组元素。

values.push("english":"http://www.test.in/audio_ivrs/sr_listenglishMSTR001.wav");

如果您想要在问题中指定的结构,那么您需要使用嵌套对象而不是数组来包含键/值对。

var values = {
  urlList: {}
};

values.urllist.english = "http://www.test.in/audio_ivrs/sr_listenglishMSTR001.wav";
values.urllist.kannada = "http://www.test.in/audio_ivrs/sr_listfrenchMSTR001.wav";

DEMO

<强>无论其...

让我们暂时假设您对代码的意义是这样的(请注意大括号):

var values=new Array();
values.push({"english":"http://www.test.in/audio_ivrs/sr_listenglishMSTR001.wav"});
values.push({"kannada":"http://www.test.in/audio_ivrs/sr_listfrenchMSTR001.wav"});

这会告诉我你将对象推送到一个完全有效 JavaScript的数组中。

要将数组中的信息输入到您需要的结构中,您可以使用类似这样的循环:

var out = {
    urlList: {}
};

for (var i = 0, l = values.length; i < l; i++) {
  var el = values[i];
  var key = Object.keys(el);
  var value = el[key];
  out.urlList[key] = value;
}

JSON.stringify(out);

DEMO