从javascript for循环创建JSON字符串

Sth*_*the 1 javascript string json loops for-loop

我想从javascript for循环创建一个JSON字符串.这是我试图做的(它给了我一些看起来像JSON字符串的东西),但它不起作用.

var edited = "";
for(var i=1;i<POST.length-1;i++) {
    edited += '"'+POST[i].name+'":"'+POST[i].value+'",';
}
Run Code Online (Sandbox Code Playgroud)

它给了我这个:

"type":"empty","name":"email-address","realname":"Email Address","status":"empty","min":"empty","max":"empty","dependson":"empty",
Run Code Online (Sandbox Code Playgroud)

如果我稍后尝试将其转换为JSON对象,则此方法无效.

Dig*_*ane 6

两个问题:

  • 你想要一个对象,所以JSON字符串必须从头开始{并结束}.
  • 有一个,可能被视为无效的尾随.

使用库可能更好,但要更正代码:

  • 更改var edited = "";var edited = "{";使用a启动JSON字符串{
  • edited = edited.slice(0, -1);在for循环后添加以删除尾随逗号.
  • edited += "}";在上一个语句之后添加以结束您的JSON字符串}

你的最终代码是:

var edited = "{";
for(var i=1;i<POST.length-1;i++) {
    edited += '"'+POST[i].name+'":"'+POST[i].value+'",';
}
edited = edited.slice(0, -1);
edited += "}";
Run Code Online (Sandbox Code Playgroud)

同样,最好使用库(例如JSON.stringify)通过使用for循环创建对象,通过使用POST[i].name作为键和POST[i].value值添加属性,然后使用库将对象转换为JSON.

此外,您从索引开始并以索引1结束POST.length-2,因此排除索引0(第一个值)和POST.length-1(最后一个值).那是你真正想要的吗?