所以我明白了:
In [5]: json.dumps({'dic':['a', 'b', 'c']})
Out[5]: '{"dic": ["a", "b", "c"]}'
是否有获取输出的方法:'{"dic": '["a", "b", "c"]'}'
基本上是str(list)?
仅在提供列表时有效:
In [2]: json.dumps(['a', 'b', 'c'])
Out[3]: '["a", "b", "c"]'
答案 0 :(得分:2)
可以通过子类化json.JSONEncoder来定制json.dumps
,但这是为了扩展可以序列化的类型。要更改已经受支持的类型(例如list
)的序列化,您必须进行一些认真的monkeypatching。有关此解决方案,请参见以下建议的重复问题:How to change json encoding behaviour for serializable python object?
在这种情况下,我建议您在序列化之前直接将数据中的列表转换为字符串。可以使用以下功能完成此操作:
import json
def predump(data):
if isinstance(data, dict):
return {k: predump(v) for k, v in data.items()}
if isinstance(data, list):
return str(data)
return data
print(json.dumps(predump({'dic':['a', 'b', 'c']})))
输出:
{"dic": "['a', 'b', 'c']"}
答案 1 :(得分:0)
import json
input_ = json.dumps({'dic':['a', 'b', 'c']})
output_ = json.loads(input_)
print(output_['dic'])
输出:['a', 'b', 'c']
答案 2 :(得分:0)
抱歉,您对此有误解。 JSON是数据的字符串表示形式。在python中,json.dumps将您的数据包装在字符串''
换句话说,它在下面的代码中不起作用。该列表未“字符串化”,只是封装在字符串''
中。
In [2]: json.dumps(['a', 'b', 'c'])
Out[3]: '["a", "b", "c"]'
比较结果的一种更正确的方法是打印json.dumps(因为这是将数据装回时的解释方式。
您应进行比较(以上是印刷版本):
{"dic": ["a", "b", "c"]} <--> ["a", "b", "c"]
摘要:您有一个正确编码的JSON。