[英]How to make a valid format JSON in python?
我想使用JSON從彈性搜索獲取查詢。 我使用以下代碼來構建查詢:
search_doc = {}
search_doc.update({"sort": [{"re_max": {"order": "desc"}}]})
search_doc.update({"from": 0})
search_doc.update({"size": 100})
search_doc.update({"filter": {"and": [{"term": {"country_id": "10"}},{"range": {"pub_date": {"gte": "2014-06-07T00:00:00.0", "lte": "2014-06-07T23:59:59.0"}}}]}})
如您所見,我在所有字符串中都使用了雙引號,但請查看打印結果:
{'sort': [{'re_max': {'order': 'desc'}}], 'filter': {'and': [{'term': {'country_id': '10'}}, {'range': {'pub_date': {'gte': '2014-06-07T00:00:00.0', 'lte': '2014-06-07T23:59:59.0'}}}]}, 'from': 0, 'size': 100}
所有帶有單引號的內容(在JSON格式中無效)或至少Elastic搜索將不接受。 有沒有一種方法可以使我的字符串采用有效的JSON格式? 我認為這不是用雙引號替換單引號的好方法。 如果有辦法,請幫助我。
不要print
字典。 使用json
模塊獲取有效的JSON字符串:
import json
json_string = json.dumps(search_doc)
該模塊還允許您執行相反的轉換,將JSON轉換為Python數據結構:
reparsed_dict = json.loads(json_string)
# reparsed_dict == search_doc
您使用的字典不是JSON,而是python內部對象。 您可以使用json.dumps()
創建正確的JSON字符串。 python標准是單引號,這就是為什么在打印時看到它們的原因。 如果您需要在字符串本身內部使用引號,則可以使用反斜杠對它們進行轉義,例如'\\"order\\"'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.