簡體   English   中英

如何在python中制作有效格式的JSON?

[英]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.

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