json-restyle
Version:
Rename keys of JSON data
148 lines (141 loc) • 10.6 kB
JavaScript
import { Injectable, Component, Input, NgModule, defineInjectable } from '@angular/core';
import { CommonModule } from '@angular/common';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
var JsonRestyleService = /** @class */ (function () {
function JsonRestyleService() {
}
/**
*
* PURPOSE : Rename key in json object
* jsonObject : Single JSON object/Array of JSON objects
* mappings : { Old key Name1 : New key Name1, Old key Name2 : New key Name2, ... }
* TODO : Nested JSON Object
* @param {?} jsonObject
* @param {?} mappings
* @return {?}
*/
JsonRestyleService.prototype.reform = /**
*
* PURPOSE : Rename key in json object
* jsonObject : Single JSON object/Array of JSON objects
* mappings : { Old key Name1 : New key Name1, Old key Name2 : New key Name2, ... }
* TODO : Nested JSON Object
* @param {?} jsonObject
* @param {?} mappings
* @return {?}
*/
function (jsonObject, mappings) {
/** @type {?} */
var data;
if (jsonObject instanceof Array) {
data = JSON.parse(JSON.stringify({
array: jsonObject
})).array;
for (var i = 0; i < data.length; i++) {
for (var property in mappings) {
data[i][mappings[property]] = data[i][property];
delete data[i][property];
}
}
return data;
}
else {
if (jsonObject instanceof Object) {
data = JSON.parse(JSON.stringify(jsonObject));
for (var property in mappings) {
data[mappings[property]] = data[property];
delete data[property];
}
return data;
}
}
return jsonObject;
};
JsonRestyleService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] },
];
/** @nocollapse */
JsonRestyleService.ctorParameters = function () { return []; };
/** @nocollapse */ JsonRestyleService.ngInjectableDef = defineInjectable({ factory: function JsonRestyleService_Factory() { return new JsonRestyleService(); }, token: JsonRestyleService, providedIn: "root" });
return JsonRestyleService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
var JsonRestyleComponent = /** @class */ (function () {
function JsonRestyleComponent(jsonService) {
this.jsonService = jsonService;
}
/**
* @return {?}
*/
JsonRestyleComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
};
/**
* @param {?} changes
* @return {?}
*/
JsonRestyleComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes && (changes["data"] && changes["data"].previousValue != changes["data"].currentValue)
|| (changes["mapping"] && changes["mapping"].previousValue != changes["mapping"].currentValue)) {
this.modifiedData = this.jsonService.reform(this.data, this.mapping);
}
};
JsonRestyleComponent.decorators = [
{ type: Component, args: [{
selector: 'json-restyle',
template: "\n <p>\n Raw Data: {{data | json}}\n </p>\n <p>\n Modified Data: {{modifiedData | json}}\n </p>\n ",
styles: []
},] },
];
/** @nocollapse */
JsonRestyleComponent.ctorParameters = function () { return [
{ type: JsonRestyleService }
]; };
JsonRestyleComponent.propDecorators = {
data: [{ type: Input }],
mapping: [{ type: Input }]
};
return JsonRestyleComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
var JsonRestyleModule = /** @class */ (function () {
function JsonRestyleModule() {
}
JsonRestyleModule.decorators = [
{ type: NgModule, args: [{
imports: [
CommonModule
],
declarations: [JsonRestyleComponent],
exports: [JsonRestyleComponent]
},] },
];
return JsonRestyleModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
export { JsonRestyleService, JsonRestyleComponent, JsonRestyleModule };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1yZXN0eWxlLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9qc29uLXJlc3R5bGUvanNvbi1yZXN0eWxlLnNlcnZpY2UudHMiLCJuZzovL2pzb24tcmVzdHlsZS9qc29uLXJlc3R5bGUuY29tcG9uZW50LnRzIiwibmc6Ly9qc29uLXJlc3R5bGUvanNvbi1yZXN0eWxlLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEpzb25SZXN0eWxlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbi8qKipcbiAqIFBVUlBPU0UgICAgOiBSZW5hbWUga2V5IGluIGpzb24gb2JqZWN0XG4gKiBqc29uT2JqZWN0IDogU2luZ2xlIEpTT04gb2JqZWN0L0FycmF5IG9mIEpTT04gb2JqZWN0c1xuICogbWFwcGluZ3MgICA6IHsgT2xkIGtleSBOYW1lMSA6IE5ldyBrZXkgTmFtZTEsIE9sZCBrZXkgTmFtZTIgOiBOZXcga2V5IE5hbWUyLCAuLi4gfVxuICogVE9ETyAgICAgICA6IE5lc3RlZCBKU09OIE9iamVjdFxuICovXG4gIHB1YmxpYyByZWZvcm0oanNvbk9iamVjdCwgbWFwcGluZ3MpIHtcbiAgICBsZXQgZGF0YTogYW55O1xuICAgIGlmIChqc29uT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgYXJyYXk6IGpzb25PYmplY3RcbiAgICAgICAgICAgIH0pKS5hcnJheTtcbiAgICAgIGZvciAobGV0IGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIHByb3BlcnR5IGluIG1hcHBpbmdzKSB7XG4gICAgICAgICAgZGF0YVtpXVttYXBwaW5nc1twcm9wZXJ0eV1dID0gZGF0YVtpXVtwcm9wZXJ0eV07XG4gICAgICAgICAgZGVsZXRlIGRhdGFbaV1bcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGpzb25PYmplY3QgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoanNvbk9iamVjdCkpO1xuICAgICAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiBtYXBwaW5ncykge1xuICAgICAgICAgIGRhdGFbbWFwcGluZ3NbcHJvcGVydHldXSA9IGRhdGFbcHJvcGVydHldO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGpzb25PYmplY3Q7XG4gIH1cbn1cbiIsImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKc29uUmVzdHlsZVNlcnZpY2UgfSBmcm9tICcuL2pzb24tcmVzdHlsZS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2pzb24tcmVzdHlsZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHA+XG4gICAgICBSYXcgRGF0YToge3tkYXRhIHwganNvbn19XG4gICAgPC9wPlxuICAgIDxwPlxuICAgICAgTW9kaWZpZWQgRGF0YToge3ttb2RpZmllZERhdGEgfCBqc29ufX1cbiAgICA8L3A+XG4gIGAsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgSnNvblJlc3R5bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcbiAgQElucHV0KCkgbWFwcGluZzogYW55O1xuXG4gIHB1YmxpYyBtb2RpZmllZERhdGE6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGpzb25TZXJ2aWNlOiBKc29uUmVzdHlsZVNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzICYmIChjaGFuZ2VzLmRhdGEgJiYgY2hhbmdlcy5kYXRhLnByZXZpb3VzVmFsdWUgIT0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZSlcbiAgICB8fCAoY2hhbmdlcy5tYXBwaW5nICYmIGNoYW5nZXMubWFwcGluZy5wcmV2aW91c1ZhbHVlICE9IGNoYW5nZXMubWFwcGluZy5jdXJyZW50VmFsdWUpKSB7XG4gICAgICB0aGlzLm1vZGlmaWVkRGF0YSA9IHRoaXMuanNvblNlcnZpY2UucmVmb3JtKHRoaXMuZGF0YSwgdGhpcy5tYXBwaW5nKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nOyBcbmltcG9ydCB7IEpzb25SZXN0eWxlQ29tcG9uZW50IH0gZnJvbSAnLi9qc29uLXJlc3R5bGUuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtKc29uUmVzdHlsZUNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtKc29uUmVzdHlsZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSnNvblJlc3R5bGVNb2R1bGUgeyB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0lBTUU7S0FBaUI7Ozs7Ozs7Ozs7O0lBUVYsbUNBQU07Ozs7Ozs7Ozs7Y0FBQyxVQUFVLEVBQUUsUUFBUTs7UUFDaEMsSUFBSSxJQUFJLENBQU07UUFDZCxJQUFJLFVBQVUsWUFBWSxLQUFLLEVBQUU7WUFDL0IsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDekIsS0FBSyxFQUFFLFVBQVU7YUFDbEIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxLQUFLLElBQUksUUFBUSxJQUFJLFFBQVEsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDaEQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzFCO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxJQUFJLFVBQVUsWUFBWSxNQUFNLEVBQUU7Z0JBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsS0FBSyxJQUFJLFFBQVEsSUFBSSxRQUFRLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN2QjtnQkFDRCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLFVBQVUsQ0FBQzs7O2dCQW5DckIsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7Ozs7NkJBSkQ7Ozs7Ozs7QUNBQTtJQW9CRSw4QkFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0tBQUs7Ozs7SUFFeEQsdUNBQVE7OztJQUFSO0tBQ0M7Ozs7O0lBRUQsMENBQVc7Ozs7SUFBWCxVQUFZLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxLQUFLLE9BQU8sWUFBUyxPQUFPLFNBQU0sYUFBYSxJQUFJLE9BQU8sU0FBTSxZQUFZLENBQUM7Z0JBQ3BGLE9BQU8sZUFBWSxPQUFPLFlBQVMsYUFBYSxJQUFJLE9BQU8sWUFBUyxZQUFZLENBQUMsRUFBRTtZQUNyRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3RFO0tBQ0Y7O2dCQTVCRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFFBQVEsRUFBRSwySEFPVDtvQkFDRCxNQUFNLEVBQUUsRUFBRTtpQkFDWDs7OztnQkFaUSxrQkFBa0I7Ozt1QkFjeEIsS0FBSzswQkFDTCxLQUFLOzsrQkFoQlI7Ozs7Ozs7QUNBQTs7OztnQkFJQyxRQUFRLFNBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3BDLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQzs7NEJBVkQ7Ozs7Ozs7Ozs7Ozs7OzsifQ==