ruby如何在值

时间:2017-11-29 04:55:49

标签: json ruby

我正在尝试在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个。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

双反斜杠实际上并不在字符串中。它只是在控制台中以这种方式显示。

puts json[:Envoy][:Tags]

打印:

57:371BF172ED2AFA7\|

请注意,您在irb / rails console / etc中看到的返回值与调用print some_object.inspect的值相同,例如:

print "\\".inspect

打印:

"\\"