Вы можете создать временную копию и удалить из нее следующие ключи:
from functools import reduce
import operator as op
def toJSON(self, skip=()):
obj = self._container.copy()
for path in skip:
del reduce(op.getitem, path[:-1], obj)[path[-1]]
return json.dumps(obj, default=lambda o: o.__dict__,
sort_keys=True, indent=4)
Затем вы можете указать ключи как путь:
foo.toJSON(skip=[('1', 'longValueList')])
Это также работает с индексами списка:
foo.toJSON(skip=[('1', 'longValueList', 2)])
В качестве модификации вы также можете использовать разделители пути, например (не работает с индексами списков):
from functools import reduce
import operator as op
def toJSON(self, skip=()):
obj = self._container.copy()
for path in skip:
path = path.split('/')
del reduce(op.getitem, path[:-1], obj)[path[-1]]
return json.dumps(obj, default=lambda o: o.__dict__,
sort_keys=True, indent=4)
foo.toJSON(skip=['1/longValueList'])