json-restyle
Version:
Rename keys of JSON data
135 lines (128 loc) • 9.53 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
*/
class JsonRestyleService {
constructor() { }
/**
*
* 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 {?}
*/
reform(jsonObject, mappings) {
/** @type {?} */
let data;
if (jsonObject instanceof Array) {
data = JSON.parse(JSON.stringify({
array: jsonObject
})).array;
for (let 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 = () => [];
/** @nocollapse */ JsonRestyleService.ngInjectableDef = defineInjectable({ factory: function JsonRestyleService_Factory() { return new JsonRestyleService(); }, token: JsonRestyleService, providedIn: "root" });
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
class JsonRestyleComponent {
/**
* @param {?} jsonService
*/
constructor(jsonService) {
this.jsonService = jsonService;
}
/**
* @return {?}
*/
ngOnInit() {
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(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: `
<p>
Raw Data: {{data | json}}
</p>
<p>
Modified Data: {{modifiedData | json}}
</p>
`,
styles: []
},] },
];
/** @nocollapse */
JsonRestyleComponent.ctorParameters = () => [
{ type: JsonRestyleService }
];
JsonRestyleComponent.propDecorators = {
data: [{ type: Input }],
mapping: [{ type: Input }]
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
class JsonRestyleModule {
}
JsonRestyleModule.decorators = [
{ type: NgModule, args: [{
imports: [
CommonModule
],
declarations: [JsonRestyleComponent],
exports: [JsonRestyleComponent]
},] },
];
/**
* @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+XG4gIGAsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgSnNvblJlc3R5bGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcbiAgQElucHV0KCkgbWFwcGluZzogYW55O1xuXG4gIHB1YmxpYyBtb2RpZmllZERhdGE6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGpzb25TZXJ2aWNlOiBKc29uUmVzdHlsZVNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzICYmIChjaGFuZ2VzLmRhdGEgJiYgY2hhbmdlcy5kYXRhLnByZXZpb3VzVmFsdWUgIT0gY2hhbmdlcy5kYXRhLmN1cnJlbnRWYWx1ZSlcbiAgICB8fCAoY2hhbmdlcy5tYXBwaW5nICYmIGNoYW5nZXMubWFwcGluZy5wcmV2aW91c1ZhbHVlICE9IGNoYW5nZXMubWFwcGluZy5jdXJyZW50VmFsdWUpKSB7XG4gICAgICB0aGlzLm1vZGlmaWVkRGF0YSA9IHRoaXMuanNvblNlcnZpY2UucmVmb3JtKHRoaXMuZGF0YSwgdGhpcy5tYXBwaW5nKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nOyBcbmltcG9ydCB7IEpzb25SZXN0eWxlQ29tcG9uZW50IH0gZnJvbSAnLi9qc29uLXJlc3R5bGUuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtKc29uUmVzdHlsZUNvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtKc29uUmVzdHlsZUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSnNvblJlc3R5bGVNb2R1bGUgeyB9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0lBTUUsaUJBQWlCOzs7Ozs7Ozs7OztJQVFWLE1BQU0sQ0FBQyxVQUFVLEVBQUUsUUFBUTs7UUFDaEMsSUFBSSxJQUFJLENBQU07UUFDZCxJQUFJLFVBQVUsWUFBWSxLQUFLLEVBQUU7WUFDL0IsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDekIsS0FBSyxFQUFFLFVBQVU7YUFDbEIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxLQUFLLElBQUksUUFBUSxJQUFJLFFBQVEsRUFBRTtvQkFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDaEQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzFCO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxJQUFJLFVBQVUsWUFBWSxNQUFNLEVBQUU7Z0JBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsS0FBSyxJQUFJLFFBQVEsSUFBSSxRQUFRLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN2QjtnQkFDRCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFDRCxPQUFPLFVBQVUsQ0FBQzs7OztZQW5DckIsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7Ozs7Ozs7O0FDSkQ7Ozs7SUFvQkUsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0tBQUs7Ozs7SUFFeEQsUUFBUTtLQUNQOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sS0FBSyxPQUFPLFlBQVMsT0FBTyxTQUFNLGFBQWEsSUFBSSxPQUFPLFNBQU0sWUFBWSxDQUFDO2dCQUNwRixPQUFPLGVBQVksT0FBTyxZQUFTLGFBQWEsSUFBSSxPQUFPLFlBQVMsWUFBWSxDQUFDLEVBQUU7WUFDckYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0RTtLQUNGOzs7WUE1QkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxjQUFjO2dCQUN4QixRQUFRLEVBQUU7Ozs7Ozs7R0FPVDtnQkFDRCxNQUFNLEVBQUUsRUFBRTthQUNYOzs7O1lBWlEsa0JBQWtCOzs7bUJBY3hCLEtBQUs7c0JBQ0wsS0FBSzs7Ozs7OztBQ2hCUjs7O1lBSUMsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUNwQyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzthQUNoQzs7Ozs7Ozs7Ozs7Ozs7OyJ9