javascript - 如何使用 jQuery 修改 JSON 内容

标签 javascript jquery json

我正在使用 jQuery 从一些 JSON 构建一个下拉列表,我正在获取该项目的完整数据并将其添加到稍后在 POST 请求中使用的 data-obj 中。我需要在数据中插入一条信息,但不知道如何执行。

当我从服务器收到数据时,数据如下所示:

{
        "genreId": 1,
        "genre": "Horror",
        "genreGroup": "Fiction",
        "Publishers": [{
                "publisher": "Random House",
                "books": [{
                        "book": "The Shining",
                        "releaseyears": [2012, 2013, 2014]
                }]
        }, {
                "publisher": "Penguin",
                "books": [{
                        "book": "Dracula",
                        "releaseyears": [2010]
                }, {
                        "book": "Taking Lives",
                        "releaseyears": [2013, 2014]
                }]
        }]
}

我需要将派生字段“原始流派”添加到数据中,使其看起来像:

{
        "genreId": 1,
        "genre": "Horror",
        "genreGroup": "Fiction",
        "Publishers": [{
                "publisher": "Random House",
                "originalgenre": "Horror",
                "books": [{
                        "book": "The Shining",
                        "releaseyears": [2012, 2013, 2014]
                }]
        }, {
                "publisher": "Penguin",
                "originalgenre": "Horror",
                "books": [{
                        "book": "Dracula",
                        "releaseyears": [2010]
                }, {
                        "book": "Taking Lives",
                        "releaseyears": [2013, 2014]
                }]
        }]
}

我认为相关代码是:

   $(info.genre).each(function (i) {
             var bookitem = $('<a/>', {
                     text: this.genre,
                     'data-value': this.genre,
                     'class': 'selectable',
                     'data-name': "G" + (this.genre),
                     'data-obj': JSON.stringify(this),
                     'data-target': 'booksection'
             });
             listGenres.append($("<li/>").append(bookitem));
[....do other things ...]

因此,当我添加 data-obj 元素时,我会获得可用的数据(就像在第一个代码块中一样,我需要在构建列表以添加额外字段之前对其进行修改。

有什么想法可以实现这一点吗?

最佳答案

$.each(data.Publishers, function(i, v) {
    data.Publishers[i]['originalgenre'] = data.genre;
});

JS FIDDLE DEMO

关于javascript - 如何使用 jQuery 修改 JSON 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24182260/

相关文章:

javascript - 在同一 html 页面上将数据从一个元素传递到另一个元素

javascript - 你能使用 JavaScript 进行桌面开发吗?

javascript - 海图.js : scrollable innterText?

javascript - 如何让我的 jQuery 在每次加载页面时运行,即使是从缓存中运行?

javascript - 使用 Quicksand 后,“单击”事件在 Backbone.View 中消失

java - 我将如何为可以处理动态字段的 Gson 对象建模?

javascript - 使用 JSON.parse(),如何获取多维数组中的值?

javascript - 使用组节点从多维子数组创建字符串

javascript - Ajax 数据类型 : JSON respond is: OK but No output?

javascript - Controller 不是函数得到未定义的错误消息 Angular js