我刚刚升级到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}\""
如果它再次在那里运行,它将继续添加更多的反斜杠。
任何想法如何解决这个问题?
答案 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() )