【发布时间】:2017-10-27 16:29:56
【问题描述】:
我需要以某种不寻常的格式为客户输出一些 JSON。我的应用是用 Rails 5 编写的。
所需的 JSON:
{
"key": "\/Date(0000000000000)\/"
}
时间戳值需要在字符串的开头和结尾都有一个\/。据我所知,这似乎是.NET services 中常用的一种格式。我一直试图让斜线正确输出。
我将问题简化为具有单个控制器操作的 vanilla Rails 5 应用程序。到目前为止,我能想到的所有逃逸排列都失败了。
def index
render json: {
a: '\/Date(0000000000000)\/',
b: "\/Date(0000000000000)\/",
c: '\\/Date(0000000000000)\\/',
d: "\\/Date(0000000000000)\\/"
}
end
输出如下:
{
"a": "\\/Date(0000000000000)\\/",
"b": "/Date(0000000000000)/",
"c": "\\/Date(0000000000000)\\/",
"d": "\\/Date(0000000000000)\\/"
}
为了便于讨论,假设格式受第三方控制,无法更改。
我已经上传了一个测试应用到 Github 来演示这个问题。 https://github.com/gregawoods/test_app_ignore_me
【问题讨论】:
-
他们的请求表明缺乏理解解释字符串如何与转义字符一起工作,而您的实验表明您正在了解它。您得到的输出是正确的。
"/value/"与"\/value\/"相同,因为 Ruby 将"\/"视为转义的正斜杠,不需要转义,因此它删除了反斜杠。"\\"是我们在双引号字符串中创建反斜杠的方式。在单引号字符串中,它是'\'。 -
是的,我倾向于同意这一点,我只是想在不摇摆不定的情况下满足要求。我可能会尝试渲染
/value/以查看他们的解析器是否会接受它。作为旁注,以下提到日期时间的答案让我认为这可能是 .NET 的事情:stackoverflow.com/questions/1580647/…
标签: ruby-on-rails json ruby