python json dumps

30
我有以下字符串,需要将其转换为没有 u'' 的列表:

我有以下字符串,需要将其转换为没有 u'' 的列表:

my_str = "[{u'name': u'squats', u'wrs': [[u'99', 8]], u'id': 2}]"

我可以通过使用

来去掉引号。

import ast
str_w_quotes = ast.literal_eval(my_str)

然后我执行:

import json
json.dumps(str_w_quotes)

并获得

[{\"id\": 2, \"name\": \"squats\", \"wrs\": [[\"55\", 9]]}]

有没有办法去掉反斜杠?目标是:

[{"id": 2, "name": "squats", "wrs": [["55", 9]]}]

3
对我来说,json.dumps 返回了 '[{"id": 2, "name": "squats", "wrs": [["99", 8]]}]' - Janne Karila
3
你确定你看到的是反斜杠而不是转义引号吗?例如,"\""'"'是相同的。 - Janne Karila
u 只是在 Python < 3.0 中表示它是一个 Unicode 字符串。您确定要转换为简单字符串吗? - Tim
1
你不能摆脱 ",你正在评估字符串并返回一个列表。str_w_quotes 是一个糟糕的列表名称。 - John La Rooy
看起来你正在将 my_str 传递给 json.dumps,否则 str_w_quotes 就会像 JanneKarila 所说的那样没有 u - vikki
当我无意中双重转储字符串时,例如json.dumps(json.dumps(str)),我得到了类似的结果,请确保你们不要这样做。 - Alexandr Perfilov
6个回答

21

这个方法可以运行,但看起来不太优雅。

import json
json.dumps(json.JSONDecoder().decode(str_w_quotes))

15

json.dumps认为"是字符串的一部分,而不是json格式的一部分。

import json
json.dumps(json.load(str_w_quotes))

应该给你:

 [{"id": 2, "name": "squats", "wrs": [["55", 9]]}]

3
它应该是json.loads(json.dumps(str_w_quotes)) - webjunkie
当我尝试将Blob数据发送到Google Cloud平台的Datastore时,它可以正常工作 :) - dipt

9

您不应将字符串转为JSON格式,而是将字符串加载为JSON格式。

import json
json.loads(str_w_quotes)

您的字符串已经是JSON格式。您不需要再将其转换为JSON格式。


6
>>> "[{\"id\": 2, \"name\": \"squats\", \"wrs\": [[\"55\", 9]]}]".replace('\\"',"\"")
'[{"id": 2, "name": "squats", "wrs": [["55", 9]]}]'

请注意,您可以直接在原始字符串上执行此操作。
>>> "[{u'name': u'squats', u'wrs': [[u'99', 8]], u'id': 2}]".replace("u\'","\'")
"[{'name': 'squats', 'wrs': [['99', 8]], 'id': 2}]"

2
{"result": "{\\"id\\": 5, \\"macaddr\\": \\"00:11:11:xx:11:D3\\", \\"ip\\": \\"10.46.02.313\\"}'

如果有人使用“\”这样的结果,请检查是否在同一输出上调用了两次json.dump。对我来说,就是这种情况。

0

这是我正在处理的东西。

之前我使用了return语句作为json.dumps(value),并且遇到了你面临的\问题。但是,由于字符串已经是JSON格式,添加这个似乎是没有意义的。我返回了值,然后问题就解决了。

至于您的其他要求,我不知道,但是\问题可以像这样修复。

    def get(self):
        CPU = psutil.cpu_percent(interval=10, percpu=False)
        CORECOUNT = psutil.cpu_count(logical=False)
        THREADCOUNT = psutil.cpu_count()
        value = {
        "CPU": CPU,
        "CPU_Cores": CORECOUNT,
        "CPU_Threads": THREADCOUNT,
        }
        return value

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