本文介绍了json.loads允许字典中有重复的键,覆盖第一个值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

>>> 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'}}}

如您所见,当我使用json.dumps()

是否有任何方法可以将其作为python中的异常捕获,说在客户端的请求中发现重复的键?

Is there any way to catch it as exception in python, saying found duplicate keys in request from client ?

推荐答案

用于application/json媒体类型的RFC 4627 建议使用唯一键,但不会明确禁止它们:

The rfc 4627 for application/json media type recommends unique keys but it doesn't forbid them explicitly:

来自 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'

这篇关于json.loads允许字典中有重复的键,覆盖第一个值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 03:41