Сторона решения RxJS проста - просто используйте оператор map
, как вы уже определили.
Более сложная часть заключается в преобразовании всех ключей свойств в полученном объекте данных ответа.
Предполагая, что все ключи в вашем объекте данных ответа находятся в регистре заголовка (то есть в паскале), все, что нужно сделать для каждого ключа, это сделать первый символ строчным.
Ниже я предоставилгрубая функция (mapPropNames
), которая может сделать это отображение.Обратите внимание, что он работает рекурсивно, поэтому он преобразует имена свойств всех вложенных объектов.
const { of } = rxjs;
const { map } = rxjs.operators;
const data = {
"BudgetDays": [
{
"Id": 1,
"Date": "2019-01-08T00:00:00",
"Earned": 10,
"Spent": 8,
"Logged": false,
"LoggedTime": "2019-02-10T12:36:09.377"
},
{
"Id": 2,
"Date": "2019-01-09T00:00:00",
"Earned": 23,
"Spent": 30,
"Logged": false,
"LoggedTime": "2019-02-10T12:36:09.38"
},
],
};
function mapPropNames(o) {
if (typeof o !== 'object' || o === null) {
return o;
}
return Object.keys(o).reduce((a, key) => {
// Customise the transformation of each property key if necessary
const mappedKey = `${key[0].toLowerCase()}${key.slice(1)}`;
a[mappedKey] = mapPropNames(o[key]);
return a;
}, o instanceof Array ? [] : {});
}
const request = of(data).pipe(
map(mapPropNames),
);
request.subscribe(console.log);
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>