从javascript进行ajax调用时删除JSON中的键

时间:2017-10-30 19:23:01

标签: javascript ajax jupyter-notebook gist

我是java脚本和ajax的新手。我有一个JSON,我想删除这个JSON中的输出单元格:

{
    "cells": [{
            "metadata": {
                "trusted": true,
                "collapsed": false
            },
            "cell_type": "code",
            "source": "print(\"hi\")",
            "execution_count": 1,
            "outputs": [{
                "output_type": "stream",
                "text": "hi\n",
                "name": "stdout"
            }]
        },
        {
            "metadata": {
                "trusted": true,
                "collapsed": true
            },
            "cell_type": "code",
            "source": "",
            "execution_count": null,
            "outputs": []
        }
    ],
    "metadata": {
        "kernelspec": {
            "name": "Python [Root]",
            "display_name": "Python [Root]",
            "language": "python"
        },
        "anaconda-cloud": {},
        "language_info": {
            "pygments_lexer": "ipython3",
            "version": "3.5.0",
            "codemirror_mode": {
                "version": 3,
                "name": "ipython"
            },
            "mimetype": "text/x-python",
            "file_extension": ".py",
            "name": "python",
            "nbconvert_exporter": "python"
        },
        "gist": {
            "id": "",
            "data": {
                "description": "Untitled5.ipynb",
                "public": true
            }
        }
    },
    "nbformat": 4,
    "nbformat_minor": 0
}

这是我尝试删除输出单元格。这段代码将数据发布到上面提到的JSON:

 "use strict";

    function _objectWithoutProperties(obj, keys) { 
        var target = {}; 
        for (var i in obj) { 
            if (keys.indexOf(i) >= 0) continue; 
            if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; 
            target[i] = obj[i]; 
        } 
        return target; 
    }
    var outputs = data.cells;
    var data_dup = _objectWithoutProperties(data, ["outputs"]);
    var id_input = $('#gist_id');
    var id = params.gist_it_personal_access_token !== '' ? id_input.val() : '';
    var method = id ? 'PATCH' : 'POST';
    // Create/edit the Gist
    $.ajax({
        url: 'https://api.github.com/gists' + (id ? '/' + id : ''),
        type: method,
        dataType: 'json',
        data: JSON.stringify(data_dup),
        beforeSend: add_auth_token,
        success: gist_success,
        error: gist_error,
        complete: complete_callback
    });
};

但是这段代码不起作用。有人可以指导我们如何直接从ajax调用中删除一个键(在这种情况下为输出)并将其发布到JSON。

这是jupyter笔记本的一个主要扩展,我试图在github上将它发布到gist上时删除输出

2 个答案:

答案 0 :(得分:0)

function _objectWithoutProperties(obj, key="outputs") { obj.cells.forEach(cell=>delete(cell[key])); }

答案 1 :(得分:0)

如果您使用ES6,则可以使用此语法删除outputs

{
  ...data,
  cells: data.cells.map(({ outputs, ...otherProps }) => otherProps),
}

注意:data是您的完整对象。