Javascript .replace()中的字符“with the characters”

时间:2015-03-16 18:15:56

标签: javascript c# json

我正在尝试将JSON字符串作为命令行参数传递给C#.exe,作为node.js子进程从Javascript传递。为了争论,我的JSON看起来像这样:

string jsonString = '{"name":"Tim"}'

将此作为C#arg传递的问题是,如果我希望在C#代码中解析它,则必须保留双引号。因此,我需要传递给C#命令行需要看起来像这样,我在那里转义双引号:

string jsonStringEscaped = '{\"name\":\"Tim\"}'

这样做的动机是它允许我在两种语言中保持一致的对象结构,这对我来说显然是非常需要的。

为了实现这一点,我试图在将参数发送到C#之前使用Javascript .replace()方法,为此我使用一个简单的RegEx:

string jsonStringEscaped = jsonString.replace(/\"/g,"\\\"")

不幸的是,这会返回'{\\"name\\":\\"Tim\\"}'形式的某些内容,这对我来说毫无用处。

我尝试过这方面的变体:

string jsonStringEscaped = jsonString.replace(/\"/g,"\\ \"")
\\ returns '{\\ "name\\ ":\\ "Tim\\ "}'

string jsonStringEscaped = jsonString.replace(/\"/g,"\\\\")
\\ returns '{\\\\name\\\\:\\\\Tim\\\\}'

string jsonStringEscaped = jsonString.replace(/\"/g,"\\\")
\\ is invalid

string jsonStringEscaped = jsonString.replace(/\"/g,"\\\ ")
\\ returns '{\\ name\\ :\\ Tim\\ }'

我尝试过将第二个.replace()参数包含在单引号中的变体''而不是双引号""没有成功。

谁能告诉我我做错了什么?更好的是,有人能建议一种更有效的方法来做我想要实现的目标吗?

1 个答案:

答案 0 :(得分:1)

除非我误读你,否则我认为你只是试图逃避一个不需要在正则表达式中转义的角色(“)。

var jsonString = '{"name":"Tim"}'
var escaped = jsonString.replace(/"/g, '\\"');
// escaped == "{\"name\":\"Tim\"}"