有没有办法让python的json.dumps'跳过'特定键,以便某些值直接写入标签?
例如
data = {'a_number': 42, 'a_string': 'foo'}
data['a_json_encoded_object'] = '{"foo": "bar"}' #this is a string being read from the DB
dumped = json.dumps(data)
然后在html文件中,使用Django
<script>
var data = {{dumped}}
</script>
这导致html为:
var data = {"a_json_encoded_object": "{\\"foo\\": \\"bar\\"}", "a_string": "foo", "a_number": 42}
但我想要的是:
var data = {"a_json_encoded_object": {"foo": "bar"}, "a_string": "foo", "a_number": 42}
有办法吗? 即告诉json.dumps:对于键'a_json_encoded_object',不要操纵该值,并在“a_json_encoded_object”之后直接将其写入json:
如果没有,将DB中的JSON编码字符串转换为浏览器内存的最佳做法是什么?作为参考,我现在正在使用JSON.parse,但它很混乱。
答案 0 :(得分:2)
好的,所以你想要达到的是
的效果data['a_json_encoded_object'] = {"foo": "bar"}
你有字符串
'{"foo": "bar"}'
来自数据库。
只需使用json.loads
将字符串转换回Python字典
>>> json.loads('{"foo": "bar"}')
{u'foo': u'bar'}
所以
data['a_json_encoded_object'] = json.loads('{"foo": "bar"}')
与
相同data['a_json_encoded_object'] = {"foo": "bar"}
在你的Django模板中
<script>
var data = {{ dumped|safe }} // Mark as safe so quotations won't be escaped
</script>
呈现
var data = {"a_json_encoded_object": {"foo": "bar"}, "a_string": "foo", "a_number": 42}