【发布时间】:2016-02-16 23:32:17
【问题描述】:
我拥有的是以下结构的 JSON 树:
{
"projects": {
"Proj1": {
"milestones": {
"default": "20150101",
"default2": "20140406",
"default3": "20140101",
"default4": "20131231",
"default5": "20131220"
}
},
"Proj2": {
"milestones": {
"default": "20131231",
"default2": "20131220"
}
}
}
}
我有将其读入网页的代码,其中“默认”部分为文本,数字/日期在文本框/表单中。这个想法是您可以更改日期并提交,然后将其发送到后端并写入文件。所有这些在大多数情况下都有效。我能弄清楚的是如何遍历我拥有的 JSON 树并编写新值。例如:
访问 JSONTREE.projects.Proj1.milestones.default 会返回该键的值。使用该调用设置值会相应地更改值。我想要做的是遍历整个树并根据表单框中的任何内容设置“默认值”的值。我有这个:
$.each(formJSON.projects, function (projectName) {
$.each(this, function (selection) {
$.each(this, function (milestones, date) {
var saltKey = projectName + "-" + milestones;
date = document.getElementById(saltKey).value;
});
});
});
但它什么也不做,即使 'alert(date)' 返回一个值。我怀疑这是因为它是值,而不是对对象的引用,但是我怎样才能得到对象呢?我怀疑这很简单,但我不是 jQuery/JS 的专家。
TL;DR 如何获取对嵌套 JSON 树中键的引用以便更改值?
编辑:好的,我想这就是我需要的:JS/Jquery - using variable in json selector。我将“日期”部分更改为:formJSON.projects[projectName][selection][milestones] = document.getElementById(saltKey).value;这似乎有效。
【问题讨论】:
-
这其实不是jquery,但是如果你熟悉angularjs,请查看json-tree指令。
标签: javascript jquery json