javascript - 分机 JS 4 : Convert JSON object to another JSON object using JavaScript

标签 javascript ajax json extjs

使用 JavaScript 将 JSON A 转换为 JSON B 的最简单方法是什么?

JSON A:

{
    "d":
    [
        {"__type":"Web.Controls.Shared.GeneralService+DropdownKeyValuePair","key":"0","value":"one"},
        {"__type":"Web.Controls.Shared.GeneralService+DropdownKeyValuePair","key":"1","value":"two"},
        {"__type":"Web.Controls.Shared.GeneralService+DropdownKeyValuePair","key":"2","value":"three"}
    ]
}

JSON B:

{
    data:
    [
        {"key":"1", "value":"one"},
        {"key":"2", "value":"two"},
        {"key":"3", "value":"three"}
    ]
}    

===================

8/1/2012 更新(使用 Ext JS 并且您有 ASP.NET 代理时的回答:

我没有在我的 JavaScript 框架中使用什么的问题中提供这个,但事实证明你可以通过在根属性中指定值“d”来隐式地消除“d”键

var statusDropdownStore = new Ext.data.Store({
    proxy: new Ext.ux.AspWebAjaxProxy({
        url: '/track/Controls/Shared/GeneralService.asmx/GetDropdownOptions',
        actionMethods: {
            create: 'POST',
            destroy: 'DELETE',
            read: 'POST',
            update: 'POST'
        },
        extraParams: {
            user_login: authUser,
            table_name: '[status]'
        },
        reader: {
            type: 'json',
            model: 'DropdownOption',
            root: 'd'
        },
        headers: {
            'Content-Type': 'application/json; charset=utf-8'
        }
    })
});

代理:

Ext.define('Ext.ux.AspWebAjaxProxy', {
    extend: 'Ext.data.proxy.Ajax',
    require: 'Ext.data',

    buildRequest: function (operation) {
        var params = Ext.applyIf(operation.params || {}, this.extraParams || {}),
                                request;
        params = Ext.applyIf(params, this.getParams(params, operation));
        if (operation.id && !params.id) {
            params.id = operation.id;
        }

        params = Ext.JSON.encode(params);

        request = Ext.create('Ext.data.Request', {
            params: params,
            action: operation.action,
            records: operation.records,
            operation: operation,
            url: operation.url
        });
        request.url = this.buildUrl(request);
        operation.request = request;
        return request;
    }
});

组合框(下拉)配置:

                    {
                        xtype: 'combo',
                        fieldLabel: 'Status',
                        emptyText: 'Select a status...',
                        store: statusDropdownStore,
                        valueField: 'key',
                        displayField: 'value',
                        mode: 'remote',  // or 'local'
                        renderTo: document.body
                    },

最佳答案

这是一个例子

var old = {
    "d":
    [
        {"__type":"Web.Controls.Shared.GeneralService+DropdownKeyValuePair","key":"0","value":"one"},
        {"__type":"Web.Controls.Shared.GeneralService+DropdownKeyValuePair","key":"1","value":"two"},
        {"__type":"Web.Controls.Shared.GeneralService+DropdownKeyValuePair","key":"2","value":"three"}
    ]
};

old.data = old.d;
delete old.d;
for(var i=0,l=old.data.length;i<l;i++){
    delete old.data[i].__type;
}

关于javascript - 分机 JS 4 : Convert JSON object to another JSON object using JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11762050/

相关文章:

javascript - 如何在移动 View 中隐藏一些导航链接?

javascript - 谷歌文档 : click a button or change style with userscript (tampermonkey)

javascript - 不删除电子邮件选择框中的数据

json - 无法将 SuperObject JSON 反序列化为对象

javascript - Angular POST JSON 结构

php - 如何通过同时提供 INDEX 将值分配给 JSON

ajax - 带有部分 ajax 加载 View 的 NodeJS MVC 框架

javascript - 使用 Ajax 查询数据库

javascript - 具有 AJAX 形式的 HTML5 历史

java - 从java中的json数组中拆分json对象