我想从javascript for循环创建一个JSON字符串。这是我试图做的(它给了我一些看起来像JSON字符串的东西),但它不起作用。
var edited = "";
for(var i=1;i<POST.length-1;i++) {
edited += '"'+POST[i].name+'":"'+POST[i].value+'",';
}
它给了我这个:
"type":"empty","name":"email-address","realname":"Email Address","status":"empty","min":"empty","max":"empty","dependson":"empty",
如果我稍后尝试将其转换为JSON对象,则不起作用。
答案 0 :(得分:6)
两个问题:
{
开头,以}
结尾。,
,可能会被视为无效。使用库可能更好,但要更正代码:
var edited = "";
更改为var edited = "{";
以使用{
edited = edited.slice(0, -1);
以删除尾随逗号。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 += "}";
同样,最好使用库(例如JSON.stringify
)来创建带有for循环的对象,使用POST[i].name
作为键添加属性,POST[i].value
作为值,然后使用库将对象转换为JSON。
此外,您从索引1
开始,以索引POST.length-2
结束,因此排除索引0
(第一个值)和POST.length-1
(最后一个值)。那是你真正想要的吗?
答案 1 :(得分:4)
//dummy data
var post=[{name:'name1',value:1},{name:'name2',value:2}];
var json=[];
for(var i=0;i<post.length;i++)
{
var temp={};
temp[post[i].name]=post[i].value;
json.push(temp);
}
var stringJson = JSON.stringify(json);
alert(stringJson );
答案 2 :(得分:0)
你不能只是建立一个哈希并在哈希上做toString
吗?像这样:
var edited = {};
for(var i=0;i<POST.length-1;i++) {
edited[POST[i].name] = POST[i].value;
}
或许JSON.stringify
正是您所寻找的:http://www.json.org/js.html
答案 3 :(得分:0)
您的JSON字符串中有额外的逗号。 JSON字符串格式:{“JSON”:“Hello,World”}
var edited = "{";
for(var i=1;i<POST.length-1;i++) {
edited += '"'+POST[i].name+'":"'+POST[i].value+'",';
}
// remove last comma:
edited = edited.substring(0, edited.length-1) + "}";