如何将js变量转换为js对象?

问题描述

我正在将此数据解析为html模板:

[ 
   {
        "name": "1","children": [
            {"name": "2"},{"name": "3"},{"name": "4"},{"name": "5"},{"name": "6"},{"name": "7"}
        ]
    } 
]

为了创建图形但要创建图形,此数据应返回类型object(警报返回[object Object])。 当我将完全相同的数据复制粘贴到js中的var中以创建图形时,它可以正常运行,但是将其分配为:

    var data = '{{ node_data }}';
    var remove = data.replace(/"/g,'"');
    var final_data = remove.replace(/'/g,' ');

它根本不起作用。我也尝试过使用JSON.parse(),但它不返回任何内容。 如何将var final_data的类型更改为object?

解决方法

由于JSON的语法是从JavaScript的语法中借来的,因此在输出<script>时,通常可以在JavaScript期望 Expression 的位置按原样插入JSON。在这种情况下,使用变量赋值,这意味着{{ node_data }}周围的引号是不必要的。

按照以下replace的建议,视图引擎可以输出用HTML实体(node_data等)编码的&quot;,这可能会与删除引号产生冲突。您尚未注意到正在使用哪个视图引擎,尽管许多使用大括号(“小记号”)的视图引擎允许使用三重大括号来禁用HTML编码。

因此,针对这两种情况进行调整,请尝试以下操作:

var final_data = {{{ node_data }}};

发送到客户端/浏览器的结果应类似于:

var final_data = [{"name": "1","children":[...]}]; // `...` just for brevity

(如果当前的视图引擎不支持三括号,您能记下您使用的是哪个引擎吗?)