json.dumps文件控制outpu中的报价

2024-05-13 03:34:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用一个叛徒.js树。 在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"}

而且,当我把它记录到浏览器中的控制台时,我得到了相同的结果。你知道吗

这是行不通的。所有的键都有引号,这似乎引起了问题。如何删除键周围的引号。你知道吗


Tags: textnameimage示例pngjsstaticthis
2条回答

问题不在于引用。它相当于数据到代码的转换。在客户机上,需要有有效的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。你知道吗

我相信你可能混淆了JavaScript对象和JSON字符串。树库需要一个JavaScript对象。您需要将JSON字符串转换为一个字符串。你知道吗

在JSON中,键必须是字符串,而JSON中的字符串是definedas

a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes

因此,删除这些双引号将导致无效的JSON。创建JavaScript对象需要执行的操作parseit:

let s = '{"text": {"name": "lana"}, "image": "static/images/stripe.png", "parent": "malory"}';
let o = JSON.parse(s);

相关问题 更多 >