我有一个JSON字符串要加载:
{"a": 1, "b": {"c": 123} }
如果我使用json.loads
,它将把{"c": 123}
作为dict
加载。但是,我不想发生这种事。在
我希望能够直接访问字符串,而无需将内部对象解释为dict,如下所示:
json_dict['b'] == '{"c": 123}'
而不是
json_dict['b'] == {"c": 123}
因为格式(如空格)和顺序(在dict
中是随机的)可能会改变,并且需要精确的字符串来进行RSA验证。在
实际代码如下:
^{pr2}$输出为:
{"alipay_trade_precreate_response":{"code":"10000","msg":"Success","out_trade_no":"123","qr_code":"https:\/\/qr.alipay.com\/bax08377e7kxveupoqnt001c"},"sign":"EqocoROqXbpkGdkFZakEkoOymGS7+UcvNi1YmcQffF4wtyQcj/RTO1sLHY8tWZFx0rxQAPjkX+7Hrszn4pNWkuBbM/c88oEbxYc+pCvnF49SHZmfkBqY6eJlLIHgPHXus5KFtvlMmkzANNHmD7c72FLDAbvMHKVyEcRPkU9ANIk="}
{'sign': 'EqocoROqXbpkGdkFZakEkoOymGS7+UcvNi1YmcQffF4wtyQcj/RTO1sLHY8tWZFx0rxQAPjkX+7Hrszn4pNWkuBbM/c88oEbxYc+pCvnF49SHZmfkBqY6eJlLIHgPHXus5KFtvlMmkzANNHmD7c72FLDAbvMHKVyEcRPkU9ANIk=', 'alipay_trade_precreate_response': {'out_trade_no': '123', 'qr_code': 'https://qr.alipay.com/bax08377e7kxveupoqnt001c', 'msg': 'Success', 'code': '10000'}}
10000
我们可以看到response['alipay_trade_precreate_response']
是一个dict
,其顺序与字符串不同。我需要这个字符串以便我可以验证RSA签名。在
要直接回答您的问题:不,
json.loads
不支持此功能。在下面我介绍了两种实现目标的方法。第一个非常健壮,依赖于^{} 中的lexer。第二种方法的健壮性要差得多,并且依赖于正则表达式。在
相关问题 更多 >
编程相关推荐