使用json.dumps我有以下输出。
{
"1": {
"fooBar": {
"_foo": "foo",
"_bar": "bar",
"_id": "1"
},
"longValueList": [
[
1,
2,
...
n,
],
...
使用此类对象函数生成上述输出。
def toJSON(self):
return json.dumps(self._container, default=lambda o: o.__dict__,
sort_keys=True, indent=4)
关键longValueList
与非常长的值列表相关联,并且在执行这些特定的json打印时我不需要打印它。如何防止pythons json.dumps打印键和值?查看python json.dumps的文档我在调用json.dumps时看不到构造函数中按名称跳过特定键的任何选项
您可以创建临时副本并从中删除这些键:
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'])