Ruby 需要格式化字符串哈希值中的转义符号
我正在处理一个YAML文件,当我将其转换为哈希时,其中一个值是字符串 这是我正在使用的文档:Ruby 需要格式化字符串哈希值中的转义符号,ruby,string,escaping,yaml,Ruby,String,Escaping,Yaml,我正在处理一个YAML文件,当我将其转换为哈希时,其中一个值是字符串 这是我正在使用的文档: --- http_interactions: - request: method: post uri: http://********/client/api body: encoding: US-ASCII string: ******************* headers: {}
---
http_interactions:
- request:
method: post
uri: http://********/client/api
body:
encoding: US-ASCII
string: *******************
headers: {}
response:
status:
code: 200
message: OK
headers:
Date:
- Mon, 24 Sep 2012 10:38:01 GMT
Set-Cookie:
- ***************; Path=/client
Content-Type:
- text/javascript;charset=UTF-8
Content-Length:
- "425"
body:
encoding: ASCII-8BIT
string: >
{
"loginresponse": {
"timeout": "43200",
"lastname": "frgrg",
"registered": "false",
"username": "rfrfr",
"timezone": "America\/New_York",
"firstname": "Mrfrfronika ",
"domainid": "3434444444444444444",
"type": "0",
"userid": "4444444444444444444444444444444441",
"sessionkey": "ewrffffffffffffffffffffff",
"timezoneoffset": "-4.0",
"account": "dddd"
}
}
http_version:
recorded_at: Mon, 24 Sep 2012 10:38:01 GMT
recorded_with: VCR 2.2.5
以下是我处理该文件的方式:
thing = YAML.load_file('login_as_user.yml')
http = thing['http_interactions']
alldoc = http[0]
response = alldoc['response']
body = response['body']
bodystring = body['string']
字符串是body
键的值,如果我在body中打印它,它将返回以下内容:
puts body
正文:
但是如果我像这样检查这个字符串的值:
puts bodystring
它的格式将很好:
{
"loginresponse": {
"timeout": "43200",
"lastname": "wwd",
"registered": "false",
"username": "dddd",
"timezone": "America\/New_York",
"firstname": "dddd ",
"domainid": "dddfdfdf",
"type": "0",
"userid": "dfsdfdsf",
"sessionkey": "dsfdsfdsf",
"timezoneoffset": "-4.0",
"account": "dsfdsfdsfd"
}
}
所以问题在于转义符号,当我打开文件并在处理数据后再次写入时,它的格式错误
如果有人能帮助我,我将不胜感激 主体只是一个字符串,但该字符串是哈希的JSON编码。要将JSON编码转换为Ruby哈希,请使用gem:
如果您在Rails中,您可能已经加载了json gem,并且不需要
require
正文只是一个字符串,但该字符串是哈希的json编码。要将JSON编码转换为Ruby哈希,请使用gem:
如果您使用的是Rails,那么您可能已经加载了json gem,不需要
require
谢谢您的回答。但问题在于文件保存前的格式不正确。字符串类型的值具有转义符号。我认为问题在于将字符串转换为哈希。谢谢。谢谢你的时间!这对我来说太完美了!非常感谢。谢谢你的回答。但问题在于文件保存前的格式不正确。字符串类型的值具有转义符号。我认为问题在于将字符串转换为哈希。谢谢。谢谢你的时间!这对我来说太完美了!非常感谢。当您说您使用body['string']
检查字符串的值时,是什么代码包围了它?您使用的是p
<代码>放置?你是在irb还是rails控制台?您是使用
还是使用
在rails视图中显示它?另外,你能把YAML.load\u file阅读的文件的内容发布出来吗?我编辑了我的问题,现在更详细了。我现在使用IRB。谢谢你的帮助!做得好--这是一个好问题。当您说您使用body['string']
检查字符串的值时,是什么代码包围了它?您使用的是p
<代码>放置?你是在irb还是rails控制台?您是使用
还是使用
在rails视图中显示它?另外,你能把YAML.load\u file阅读的文件的内容发布出来吗?我编辑了我的问题,现在更详细了。我现在使用IRB。谢谢你的帮助!干得好,这是个好问题。
{
"loginresponse": {
"timeout": "43200",
"lastname": "wwd",
"registered": "false",
"username": "dddd",
"timezone": "America\/New_York",
"firstname": "dddd ",
"domainid": "dddfdfdf",
"type": "0",
"userid": "dfsdfdsf",
"sessionkey": "dsfdsfdsf",
"timezoneoffset": "-4.0",
"account": "dsfdsfdsfd"
}
}
require 'json'
body_hash = JSON.parse(bodystring)