使用json.dumps(string)将一个字符串转换为JSON格式

3

我想把字符串放入json.dumps()函数中。

string = "{data}"

print json.dumps(string)

我得到了:

"{data}" 而不是 {data}

如何获取没有引号的字符串?

使用replace方法:

json.dumps(string.replace('"', '')

或者strip

json.dumps(string.strip('"')

不起作用。
2个回答

14

你不是要倒出一个字符串,而是要倒入到一个字符串中。

d = {"foo": "bar"}
j = json.dumps(d)
print(j)

输出:

{"foo": "bar"}

使用字符串作为 json.dumps 的参数是没有意义的,因为它期望的参数是字典或列表/元组。

使用此转换表将 obj 序列化为 JSON 格式的字符串。


你可能想打印j而不是d。 - Pynchia
如果我想将字典转换为字符串,我可以使用json.dumps()。但是如果我已经有一个字符串,可以直接发送给收件人而不需要json.dumps吗?在此之前,请确保收件人能够正确接收它。 - user4737714
如果字符串的内容是有效的JSON,您可以将其发送给期望JSON的人。但请注意,{data}不是有效的JSON。在http://jsonlint.com/上检查它。 - user1907906
这个问题有歧义。但据我理解,在使用json.dumps之后,他得到了一个字符串,并希望将其转换为字典。 - Ajay
依我看,如果您像@Ajay那样写输出的代码'{"foo": "bar"}',会更加清晰易懂。 - Manu CJ

1
In [17]: d = {"foo": "bar"}

In [18]: j = json.dumps(d)

In [19]: j
Out[19]: '{"foo": "bar"}'

现在,如果您需要返回字典而不是字符串
In [37]: l=json.loads(j)

In [38]: l
Out[38]: {u'foo': u'bar'}

或者另一种选择。
In [20]: import ast
In [22]: k=ast.literal_eval(j)

In [23]: k
Out[23]: {'foo': 'bar'}

json.loads 是什么? - user1907906
根据 {data},OP 意味着一个字典。 - Ajay
我还是不明白为什么你建议使用ast。为什么? - user1907906
他要求输出的格式为:"{data}" 而不是:{data} - Ajay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接