使用stringify时,Javascript会不断添加反斜杠

时间:2018-01-22 17:35:12

标签: javascript ruby-on-rails ruby

我刚刚升级到Ruby 5.1.4,我以前工作的一些javascript代码停止工作,我似乎无法弄清楚原因。

每次我设置像这样的对象的属性

    FLOW.nodes.forEach( function( node ) {
    _nodes.push({
        "step_type":            node.type,
        "internal_id":          node.getId({ useMap: useMap }),
        "step_attributes" : {
            "shape":                node.shape,
            "icon":                 node.icon,
            "title":                node.title,
            "subtitle":             node.subTitle,
            "connectors":           JSON.stringify( node.connectors ),
            "tags":                 JSON.stringify( node.tags ),
            "allowed_connections":  JSON.stringify( node.allowedConnections ),
            "position":             JSON.stringify( node.position ),
            "configured":           node.configured,
            "socket":               JSON.stringify( node.socket ),
            "buttons":              JSON.stringify( node.buttons ),
            "color":                node.color
        },
        "properties":            JSON.stringify( FLOW.getNodeProperties( node.getId() ) )
    });
});

每次我保存它不断向属性添加更多反斜杠,我无法弄清楚为什么

这是打印出的内容,如

"properties": "\"{\\\"tags\\\": \\\"erewerwre\\\",\\\"tagged_present\\\": true,\\\"tagged_future\\\": false,\\\"tagged_present_future\\\": false,\\\"remove_from_other_flows\\\": false}\""

如果它再次在那里运行,它将继续添加更多的反斜杠。

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

查看代码和结果,FLOW.getNodeProperties返回包含JSON的字符串。通过将JSON.stringify应用于它,您将再次对其进行编码,例如:

function getNodeProperties() {
  return JSON.stringify({some: "property"});
}
var result = {
  properties: JSON.stringify(getNodeProperties())
};
console.log(result.properties);

只需删除JSON.stringify来电:

"properties": FLOW.getNodeProperties( node.getId() )