如何使用“而不是”来生成Json字符串

时间:2018-08-16 11:01:45

标签: python json python-3.x

我想使用"而不是'

countryid="be"
msg = "{'field1': 'abc','field2': '"+countryid+"', 'field3': '1'}"

我尝试如下使用"""

msg = """{"field1": "abc","field2": """"+countryid+"""", "field3": "1"}"""

但是我得到:

{"field1": "abc","field2": +countryid+, "field3": "1"}

代替:

{"field1": "abc","field2": "be", "field3": "1"}

2 个答案:

答案 0 :(得分:2)

您可以使用json模块

import json
countryid="be"
msg = {
    'field1': 'abc',
    'field2': countryid,
    'field3': '1'
}
print(json.dumps(msg))

答案 1 :(得分:2)

我会回答您的问题,但是我认为您所提出的问题可能有误。

您面临的问题是由于 countryid

的起始报价的不幸位置
msg = """{"field1": "abc","field2": """"+countryid+"""", "field3": "1"}"""
                                    ^^^^
                                    ||||

有关字符串文字的python文档说:

  

在三引号字符串中,允许使用不转义的换行符和引号   (并保留),但连续三个未转义的引号   终止字符串。 (``引号''是用于打开   字符串,即“或”。

因此,您有很多选择可以解决您的问题:

1)转义有问题的报价:

msg = """{"field1": "abc","field2": \""""+countryid+"""", "field3": "1"}"""
                                    ^
                                    |

2)使用单引号:

msg = '{"field1": "abc","field2": "'+countryid+'", "field3": "1"}'

3)使用字符串格式:

msg = """{"field1": "abc","field2": "%s", "field3": "1"}""" % countryid
                                      ^                     ^    ^
                                      |                     |    |

如果您使用的是python 3.6及更高版本,或者您愿意使用库,则还有更多选择。

这是Python语言的领域之一,“做某事的一种明显方法”的“禅宗python”原则被打破

请注意,我上面解释的所有方法实际上都不是生成JSON的好方法。

如果我是你,这就是我要做的事情:

import json
countryid= "someone's ID"
message = {'field1': 'abc','field2': countryid,'field3': '1'}
msg = json.dumps(messsage)