Javascript 使用下划线更新嵌套的json数据
我有一个json,看起来是这样的:Javascript 使用下划线更新嵌套的json数据,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,我有一个json,看起来是这样的: { "itemsList": [{ "id": 187994, "contentName": "Content", "contentItems": [{ "name": "nested 1", "description": "<p>nested 1</p>\n" }, { "name": "ne
{
"itemsList": [{
"id": 187994,
"contentName": "Content",
"contentItems": [{
"name": "nested 1",
"description": "<p>nested 1</p>\n"
}, {
"name": "nested 2 ",
"description": "<p>nested 2</p>\n"
}]
}]
}
请告诉我如何将更新后的值传递给现有contentItems,而不清除对象中的其余数据
这是我用来创建数据的小提琴:
谢谢。这有帮助吗?在要添加的示例中,我希望更新嵌套json对象的当前值。请更新问题以仅包含相关代码。如果你更新了一些东西,旧的价值就会被新的价值所取代。不清楚你想要什么。您能提供一个输入和输出示例吗?在更新当前数据的同时,我不知道如何保留旧数据,而只是将新值推送到contentItems对象
$("#editResourceItemForm").submit(function (e) {
e.preventDefault();
$.getJSON(appDirLocation + "public/_data/resource_data.json", function (jsonData) {
console.log(jsonData.itemsList.contentItem);
//var contentItems = jsonData.itemsList.contentItems;
var resourceId = $("#editResourceItemForm input#resourceId").val(); // resource id
var updatedContentName = $("#appData").data("content-name");
var updatedContentItem = {
name: $("#editResourceItemForm input#contentItemName").val(),
description: CKEDITOR.instances.contentItemDescription.getData()
};
resourceId = Number(resourceId); // input filed is collected as string needs to make number
_.each(jsonData.itemsList, function (item) {
if (item.id === resourceId) {
item.contentName = updatedContentName;
item.contentItems = updatedContentItem ;
// queue here new items to update
}
}); // used underscore.js seems better for handling json data
var newJsonOutput = JSON.stringify(jsonData); //stringify new data
var jsonFile = new BCAPI.Models.FileSystem.File(appDirLocation + "public/_data/resource_data.json");
jsonFile.upload(newJsonOutput).done(function () {
$("#contentItemsList").html(""); //clear old data to load new
console.log("RESOURCE DATA UPDATED");
$('#editResourceItem').foundation('close'); //close reveal after created and saved file
renderResourceItems(resourceId);
}).fail(function (jqXHR) {
console.log("RESOURCES JSON FAILED UPDATE: " + jqXHR.responseText);
}); // END OF JSON CREATING
console.log(newJsonOutput);
}).done(function (dataprocessed) {
console.log(dataprocessed);
}).fail(function (jqXHR) {
console.log("Request failed." + "Error code: " + jqXHR.status + "Error text: " + jqXHR.statusText + "Response text: " + jqXHR.responseText);
});
});