繁体   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