JSON.Stringify似乎不适用于我的对象。我的代码是这样的:
var LessonTimes={}, CurrentLesson={}, LessonTimeID=1;
$('.AddTimeSection').each(function(e){
CurrentLesson['day']=$(this).find('.AddTimeDay').val();
CurrentLesson['start']=$(this).find('.AddTimeStart').val();
CurrentLesson['end']=$(this).find('.AddTimeEnd').val();
CurrentLesson['notes']=$(this).find('.AddTimeNotes').val();
CurrentLesson['id']=LessonTimeID;
LessonTimes[LessonTimeID]=CurrentLesson;
console.log(LessonTimes[LessonTimeID]);
LessonTimeID+=1;
});
console.log(JSON.stringify(LessonTimes));
我的JSON.stringify输出如下。如您所见,最后一个对象被重复,但我无法弄清楚为什么所有单个对象都是正确的。
Object {day="Mon", start="15:00", end="16:00", id=1, ...}
Object {day="Tue", start="16:00", end="17:00", id=2, ...}
Object {day="Wed", start="17:00", end="18:00", id=3, ...}
JSON = {"1":{"day":"Wed","start":"17:00","end":"18:00","notes":"","id":3},"2":{"day":"Wed","start":"17:00","end":"18:00","notes":"","id":3},"3":{"day":"Wed","start":"17:00","end":"18:00","notes":"","id":3}}
答案 0 :(得分:2)
这不是JSON
的问题。
您需要在每次迭代时重新分配CurrentLesson={}
。否则,您正在更改同一个对象。
答案 1 :(得分:0)
这应该有效:
var LessonTimes = [];
$('.AddTimeSection').each(function(e){
LessonTimes.push({
day: $(this).find('.AddTimeDay').val(),
start: $(this).find('.AddTimeStart').val(),
end: $(this).find('.AddTimeEnd').val(),
notes: $(this).find('.AddTimeNotes').val(),
id: LessonTimes.length
});
});
console.log(JSON.stringify(LessonTimes));