标签云

微信群

扫码加入我们

WeChat QR Code

What is the easiest way to convert JSON A to JSON B using JavaScript?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 update (answer when using Ext JS and you have an ASP.NET proxy:I didn't provide this in my question about what I'm using for a JavaScript framework, but it turns out you can implicitly eliminate the "d" key by specifying the value "d" in the root property 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'}})});Proxy: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;}});Combo Box (dropdown) configuration:{xtype: 'combo',fieldLabel: 'Status',emptyText: 'Select a status...',store: statusDropdownStore,valueField: 'key',displayField: 'value',mode: 'remote',// or 'local'renderTo: document.body},


you are precisely right about only having the array as the object!See the bottom of my question in regards to how ExtJS allows you to remove the "d" property.I guess the "__type" property stays there.. doesn't hurt anything since we explicitly state the "key" and "value" in the combo configuration.

2019年06月26日44分36秒

"key" being the valueField value property and "value" being the displayField value

2019年06月26日44分36秒

Yes, you can use ExtJS to extract the array from the wrapping object but that's heavy artillery! The second line of code does it by reassigning the elements inside .d to the wrapping object itself: TheNewObject = TheNewObject.d; Happy coding!!

2019年06月26日44分36秒

Have you ever eaten at Frenchies on Clearwater Beach?(near Tampa/St. Petersburg) Great Food!

2019年06月26日44分36秒

No, but have you ever eaten in Paris, France?

2019年06月26日44分36秒