terriajs
Version:
Geospatial data visualization platform.
37 lines (30 loc) • 1.42 kB
JavaScript
;
/*global require*/
var defaultValue = require('terriajs-cesium/Source/Core/defaultValue');
/**
* Serializes an object to JSON.
* @param {Object} target The object to serialize.
* @param {Function} filterFunction A function that, when passed the name of a property as its only parameter, returns true if that property should be serialized and false otherwise.
* @param {Object} [options] Optional parameters to custom serializers.
* @return {Object} An object literal corresponding to the serialized object, ready to pass to `JSON.stringify`.
*/
function serializeToJson(target, filterFunction, options) {
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
filterFunction = defaultValue(filterFunction, function() { return true; });
var result = {};
for (var propertyName in target) {
if (target.hasOwnProperty(propertyName) &&
propertyName.length > 0 &&
propertyName[0] !== '_' &&
propertyName !== 'parent' &&
filterFunction(propertyName, target)) {
if (target.serializers && target.serializers[propertyName]) {
target.serializers[propertyName](target, result, propertyName, options);
} else {
result[propertyName] = target[propertyName];
}
}
}
return result;
}
module.exports = serializeToJson;