我正在尝试在ruby中创建一个看起来像这样的json对象:
{
"Envoy": {
"Tags": "57:371BF172ED2AFA7\|",
"SerialNumber": "55555555",
"KernelVersion": "0123"
}
}
所以在irb中我将上面的json设置为这样的对象:
json = {"Envoy":{"Tags":"57:371BF172ED2AFA7\|","SerialNumber":"55555555","KernelVersion":"0123"}
irb的结果是:
=> {:Envoy=>{:Tags=>"57:371BF172ED2AFA7|", :SerialNumber=>"55555555", :KernelVersion=>"0123"}}
正如你所看到的那样摆脱了\
中的"Tags"
因此,我添加了另一个反斜杠,试图逃避被吃掉的那个。但是结果添加了2个反斜杠而不是预期的1反斜杠:
[59] pry(#<Object>)> json = {"Envoy":{"Tags":"57:371BF172ED2AFA7\\|","SerialNumber":"55555555","KernelVersion":"0123"}}
=> {:Envoy=>{:Tags=>"57:371BF172ED2AFA7\\|", :SerialNumber=>"55555555", :KernelVersion=>"0123"}}
正如你所看到我显然已经迷失了,我需要添加一个反斜杠,这样当我json.to_json
时它会添加2个反斜杠而不是4个。
有什么想法吗?
答案 0 :(得分:4)
双反斜杠实际上并不在字符串中。它只是在控制台中以这种方式显示。
puts json[:Envoy][:Tags]
打印:
57:371BF172ED2AFA7\|
请注意,您在irb / rails console / etc中看到的返回值与调用print some_object.inspect
的值相同,例如:
print "\\".inspect
打印:
"\\"