Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery修改JSON内容_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如何使用jQuery修改JSON内容

Javascript 如何使用jQuery修改JSON内容,javascript,jquery,json,Javascript,Jquery,Json,我正在使用jQuery从一些JSON构建一个下拉列表,我将获取此项的完整数据,并将其添加到data obj中,稍后我将在POST请求中使用它。我需要在数据中插入一条信息,但无法确定如何执行 从服务器接收数据时,数据如下所示: { "genreId": 1, "genre": "Horror", "genreGroup": "Fiction", "Publishers": [{ "publisher":

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

从服务器接收数据时,数据如下所示:

{
        "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 ...]
$(信息类型)。每个(功能(i){
var bookitem=$(''{
文本:这是一种体裁,
“数据值”:this.genre,
“类”:“可选”,
“数据名”:“G”+(this.genre),
“数据对象”:JSON.stringify(this),
“数据目标”:“booksection”
});
追加($(“
  • ”).append(bookitem)); [……做其他事情……]
  • 因此,当我添加dataobj元素时,我得到了可用的数据(就像在第一个代码块中一样,我需要在构建列表以添加额外字段之前对其进行修改)

    有什么办法可以做到这一点吗?

    我假设发布者数组中的“原始流派”应该与主对象中的“流派”匹配?如果是这样,应该这样做:

    for (var i = 0; i < myJson.Publishers.length; i++) {
        myJson.Publishers[i].originalgenre = myJson.genre;
    }
    
    $.each(yourObject.Publishers, function(index, publisher) {
        publisher.originalgenre = yourObject.genre;
    });
    

    我需要添加一个与publisher级别相同的字段。因此,我从服务器获取第一个块代码,我需要对其进行一些操作,以添加一个字段,使其看起来像第二个块代码。您的变量不匹配。..
    I!==I
    您是对的@Tomanow,谢谢。这是从手机写入的问题。更正--将被删除现在小心点。
    $.each(yourObject.Publishers, function(index, publisher) {
        publisher.originalgenre = yourObject.genre;
    });
    
    $.each(data.Publishers, function(i, v) {
        data.Publishers[i]['originalgenre'] = data.genre;
    });