При преобразовании простого объекта из JSON в экземпляр класса мне нужен способ перехватить все свойства, не имеющие соответствующих свойств класса, и сохранить их в каком-то месте (AdditionalData в примере ниже).
Я заглянул в некоторые библиотеки ( class-transformer , marshal.ts , Typed JSON), но, похоже, нет никаких средств делать то, что я хочу.
Ниже приведен гипотетический пример того, чего я хотел бы достичь (он использует преобразователь класса , но любая другая библиотека десериализатора будет работать для меня)
// model/DailyStatsRecord.ts
export class DailyStatsRecord {
public uuid: string;
public date: string;
public additionalData: any;
}
// index.ts
import "reflect-metadata";
import {plainToClass} from "class-transformer";
import {DailyStatsRecord} from './model/DailyStatsRecord';
const instance = plainToClass(DailyStatsRecord, {
uuid: "faf9a028-5bbe-11ea-bc55-0242ac130003",
date: "2020-03-01",
otherField: 123,
more: ["data"],
foo: "bar",
});
console.log(JSON.stringify(instance.additionalData, null, 2));
Вот что я хочу, чтобы этот скрипт выводил:
{
"otherField": 123,
"more": ["data" ],
"foo": "bar"
}