簡體   English   中英

不正確的 python 字典到 JSON 轉換

[英]Incorrect python dictionary to JSON conversion

我正在嘗試將 python 字典轉換為下面的target JSON 對象。 我想我會使用json.dumps() (根據這個線程)但結果不一樣。 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's payment API傳遞的參數。 此處查看與此相關的 cURL 示例。

由於您正在比較字符串,因此即使兩個字符串之間的空格不同,您也會得到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 中有一些不必要的空格。

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

您可以使用separators參數在逗號分隔符后獲得一個空格。

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

為了獲得花括號周圍的空格,恐怕您需要使用基於正則表達式的替換。

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"... vs. "token": {"name":..

或者,您可以比較兩個沒有空格的值,如下所示:

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

它也返回True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM