使用json.dumps我可以将字典转换为json格式,如下所示:
>>> from json import dumps
>>> dumps({'height': 100, 'title': 'some great title'})
'{"title": "some great title", "height": 100}'
但是,我希望将我的字典变成javascript文字,如下所示:
{title: "some great title", height: 100}
(注意标题和高度周围没有双引号。)
是否有Python库可以执行此操作?
答案 0 :(得分:0)
肮脏的黑客,但可以工作:子类JSONEncoder并覆盖_iterencode_dict方法,以便它产生您想要的格式化密钥。在python3.3中,它位于行json.encoder
的{{1}}模块的第367行。您可能希望复制整个方法并将此行更改为_encoder(key)
。
再次 - 这真的很脏,除非你别无选择 - 不要这样做。虽然它是可行的,但是如果你真的需要的话还有什么值得了解。
答案 1 :(得分:0)
如果您知道所有密钥都是有效令牌,则可以使用以下简单代码:
import json
def js_list(encoder, data):
pairs = []
for v in data:
pairs.append(js_val(encoder, v))
return "[" + ", ".join(pairs) + "]"
def js_dict(encoder, data):
pairs = []
for k, v in data.iteritems():
pairs.append(k + ": " + js_val(encoder, v))
return "{" + ", ".join(pairs) + "}"
def js_val(encoder, data):
if isinstance(data, dict):
val = js_dict(encoder, data)
elif isinstance(data, list):
val = js_list(encoder, data)
else:
val = encoder.encode(data)
return val
encoder = json.JSONEncoder(ensure_ascii=False)
js_val(encoder, {'height': 100, 'title': 'some great title'})
js_val()的返回值采用您想要的格式。