WCF DataContracts include an ExtensionData property which is a bit troublesome if you are trying to send a modified object back up to the service if it has no properties in Javascript.
So I wrote a little piece of Javascript to clean it up:
function DeleteExtensionData(obj) {
var keys = Object.keys(obj);
keys.each(function(key) {
if(!Object.isFunction(obj[key])) {
if(obj[key] instanceof Object) {
DeleteExtensionData(obj[key]);
}
if(key == "ExtensionData") {
delete obj[key];
}
}
});
}
It will recusively delete all ExtensionData properties from the object. You can call as soon as you get the result from a completed AJAX request or you can call before sending an object parameter to a service.
Note that it uses constructs from prototype.
If you want to get fancy, you can also write a custom serializer.