>>> raw_post_data = request.raw_post_data >>> print raw_post_data {"group":{"groupId":"2", "groupName":"GroupName"}, "members":{"1":{"firstName":"fName","lastName":"LName","address":"address"},"1": {"firstName":"f_Name","lastName":"L_Name","address":"_address"}}} >>> create_request = json.loads(raw_post_data) >>> print create_request {u'group': {u'groupName': u'GroupName', u'groupId': u'2'}, u'members': {u'1': {u'lastName': u'L_Name', u'firstName': u'f_Name', u'address': u'_address'}}}
如您所见,当我使用时,键为“ 1”的成员将被覆盖 json.dumps()
json.dumps()
有什么办法可以将其作为python中的异常捕获,说在客户端的请求中找到重复的键?
application/json媒体类型的rfc 4627建议使用唯一键,但不会明确禁止它们:
application/json
对象中的名称应唯一。
从rfc 2119开始:
应该使用 这个词或形容词“推荐”,这意味着 在特定情况下可能存在忽略 特定项目的正当理由,但是 在选择其他方法之前,必须理解并仔细权衡所有含义。
import json def dict_raise_on_duplicates(ordered_pairs): """Reject duplicate keys.""" d = {} for k, v in ordered_pairs: if k in d: raise ValueError("duplicate key: %r" % (k,)) else: d[k] = v return d json.loads(raw_post_data, object_pairs_hook=dict_raise_on_duplicates) # -> ValueError: duplicate key: u'1'