python字典到JSON的转换不正确

2024-09-29 23:22:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将python字典转换为下面的targetJSON对象。我想我会使用json.dumps()(根据this thread),但结果并不相同。target中有一些非统一的空格,但我不允许更改或编辑它们

你知道怎么做吗

import json

dict= {"token":{"name":"John Doe","code":"123456789"}}
target = '{ "token":{ "name":"John Doe", "code":"123456789" } }'

print(json.dumps(dict))
print(json.loads(json.dumps(dict)))
print(target)

>>>{"token": {"name": "John Doe", "code": "123456789"}}
>>>{'token': {'name': 'John Doe', 'code': '123456789'}}
>>>{ "token":{ "name":"John Doe", "code":"123456789" } }

对于其他上下文,我试图准备通过Bambora的支付API传递的参数。请参见与此here关联的cURL示例


Tags: 对象nametokenjsontarget字典codethis
3条回答

目标JSON中有一些不必要的空白

target = '{ "token":{ "name":"John Doe", "code":"123456789" } }'

您可以使用分隔符参数在逗号分隔符后获得一个空格

json.dumps(dict, separators=(', ', ':'))

为了得到花括号周围的空格,恐怕需要使用基于正则表达式的替换

因为您正在比较字符串,所以如果两个字符串之间有一个空格不同,您将得到一个False结果。即使这两个结构在结构和数据方面实际上是相同的,也可能发生这种情况。 您真正想做的是找到一种从等式中删除非实质性格式问题的方法

下面是如何修复代码以消除间距差异和其他非实质性差异的问题:

import json

dict= {"token":{"name":"John Doe","code":"123456789"}}
target = json.dumps(json.loads('{ "token":{ "name":"John Doe", "code":"123456789" } }'))

print(target == json.dumps(dict))

结果:

True

json.dumps()返回{"token": {"name": "John Doe", "code": "123456789"}}'

它在每个括号{}的末尾没有空格,但您的一个字符串有空格

此代码返回True

json.dumps(dict) == '{"token": {"name": "John Doe", "code": "123456789"}}'

让我们仔细看看“白色空间”。

区别在于:(您的vs.json.dumps)

  • "code:"123""code": "123"
  • { "token"...{"token"...
  • "token":{ "name"..."token": {"name":..

或者,您可以比较两个没有空格的值,如下所示:

json.dumps(dict).replace(' ', '') == target.replace(' ', '')

它还返回True

相关问题 更多 >

    热门问题