我正在用Treant.js树构建Flask应用程序。 在this示例中,树形图采用了这样的数据
lana =
{
text: {name: "lana"},
image: "static/images/lana.png",
parent: malory
}
那很好。我现在需要从Python对象重新创建
现在我有
d = {}
d["parent"] = "malory"
d["text"] = { 'name': "lana" }
d['image'] = 'static/images/stripe.png'
print json.dumps(d)
>>> {"text": {"name": "lana"}, "image": "static/images/stripe.png", "parent": "malory"}
此外,当我将其记录到浏览器的控制台中时,也会得到相同的结果。
这不起作用。所有键都有引号,似乎引起了问题。如何删除按键周围的引号。
答案 0 :(得分:1)
问题不在于引号。而是关于数据到代码的转换。在客户端上,您需要具有有效的JavaScript代码才能执行。通常,代码是静态的,而其处理的数据则由服务器动态生成。此类数据通常以JSON对象的形式提供。 JSON看起来与JavaScript类似,但它不是JavaScript代码。但是,JavaScript支持使用JSON作为表示数据的本机方式。
示例:
<!-- your template -->
<script>
var myVar = {{ my_flask_var|json }};
console.log(myVar);
</script>
在上面的示例中,来自服务器的响应如下所示:
<!-- your template -->
<script>
var myVar = {"foo": 42, "bar": "qux"};
console.log(myVar);
</script>
但是,它是有效的JavaScript。
答案 1 :(得分:0)
我相信您可能会混淆JavaScript对象和JSON字符串。您的树库需要一个JavaScript对象。您需要将JSON字符串转换为一个。
在JSON中,键必须为字符串,并且JSON中的字符串为defined,
零个或多个Unicode字符的序列,用双精度包装 引号,使用反斜杠转义符
因此,删除这些双引号将导致无效的JSON。 parse创建JavaScript对象所需要做的事情:
let s = '{"text": {"name": "lana"}, "image": "static/images/stripe.png", "parent": "malory"}';
let o = JSON.parse(s);