それは、Javaと同じように動作するようにあなたがJsonIgnore
decoratorを作成することができます。
const IGNORE_FIELDS = new Map<string, string[]>();
function JsonIgnore(cls: any, name: string) {
let clsName = cls.constructor.name;
let list: string[];
if (IGNORE_FIELDS.has(clsName)) {
list = IGNORE_FIELDS.get(clsName);
} else {
list = [];
IGNORE_FIELDS.set(clsName, list);
}
list.push(name);
}
class Base {
toJson(): { [name: string]: any } {
let json = {};
let ignore = IGNORE_FIELDS.get(this.constructor.name);
Object.getOwnPropertyNames(this).filter(name => ignore.indexOf(name) < 0).forEach(name => {
json[name] = this[name];
});
return json;
}
}
class TblColabAdmin extends Base {
snomatrcompl: string;
nflativo: number;
@JsonIgnore
ativo: boolean;
constructor(snomatrcompl: string, nflativo: number, ativo: boolean) {
super();
this.snomatrcompl = snomatrcompl;
this.nflativo = nflativo;
this.ativo = ativo;
}
}
let obj = new TblColabAdmin("str", 43, true).toJson();
console.log(obj); // Object {snomatrcompl: "few", nflativo: 43}
(code in playground)
をそれは非常に多くのです一度しかやっていなければ動作しますが、コード内でよくある問題なら、アプローチがうまくいくはずです。
いいえ、新しいオブジェクトを作成し、送信するプロパティのみを設定する必要があります。 – toskv
'toSSON'メソッドを追加しましたか? 'toJSON(){const obj = Object.assign({}、this)}のようなものです。 obj.ativoを削除します。 objを返します。 } '。または 'toJSON(){Object.assign({}、this、{ativo:undefined})を返します。 } '。 –
この回答に示唆されているようにカスタム置換えを使用すると助かります。 https://stackoverflow.com/a/41685627/2685234 – ramtech