【发布时间】:2019-03-11 19:04:28
【问题描述】:
我正在使用 Marshmallow 将我的决策类的实例发送到 JSON。但是,这也会转储 None 的属性,例如我的属性 score 将转换为 JSON 格式的 null。之后,我无法使用相同的方法再次读取 JSON。
https://repl.it/repls/VoluminousMulticoloredFacts
最后一行是它当前失败的地方。我需要在加载过程中不将None 转储到 JSON 或跳过 null:
import json
from marshmallow import Schema, fields, post_load
json_data = """{
"appid": "2309wfjwef",
"strategy": "First Strategy"
}"""
# Output class definition
class Decision(object):
def __init__(self, appid = None, strategy = None, score = None):
self.appid = appid
self.strategy = strategy
self.score = score
class DecisionSchema(Schema):
appid = fields.Str()
strategy = fields.Str()
score = fields.Int()
@post_load
def make_decision(self, data):
return Decision(**data)
# Deserialization into object
dec_json = json.loads(json_data)
schema = DecisionSchema()
dec = schema.load(dec_json).data
print(dec.strategy)
# Dump results back to JSON
schema = DecisionSchema()
out = schema.dumps(dec)
print(out.data)
# Load back from dump
schema = DecisionSchema()
dec = schema.load(out).data
#print(dec.strategy) # returns error currently
【问题讨论】:
标签: json python-3.x serialization marshmallow