使用 ruby 将字符串转换为散列
Convert string to hash with ruby
我在我的模型中将一个字段保存为字符串,所以之后我尝试通过控制台
1.9.3-p547 :250 > s1 = s.send_details
=> "---\nnew_order: order\nprogress: order on d way\ndelivered:\n
message: delivered\n send_after: '1'\n"
1.9.3-p547 :255 > JSON.parse(s1)
JSON::ParserError: 757: unexpected token at '---
'
1.9.3-p547 :262 > s1.class
=> String
我正在尝试将其转换为 json 或散列,因为我需要从中获取值,有什么方法可以做到这一点吗?
看起来你的字符串是一个 YAML。您可以使用 YAML.load
:
轻松解码
require 'yaml'
YAML.load("---\nnew_order: order\nprogress: order on d way\ndelivered:\n message: delivered\n send_after: '1'\n")
=> {"new_order"=>"order", "progress"=>"order on d way", "delivered"=>{"message"=>"delivered", "send_after"=>"1"}}
我在我的模型中将一个字段保存为字符串,所以之后我尝试通过控制台
1.9.3-p547 :250 > s1 = s.send_details
=> "---\nnew_order: order\nprogress: order on d way\ndelivered:\n
message: delivered\n send_after: '1'\n"
1.9.3-p547 :255 > JSON.parse(s1)
JSON::ParserError: 757: unexpected token at '---
'
1.9.3-p547 :262 > s1.class
=> String
我正在尝试将其转换为 json 或散列,因为我需要从中获取值,有什么方法可以做到这一点吗?
看起来你的字符串是一个 YAML。您可以使用 YAML.load
:
require 'yaml'
YAML.load("---\nnew_order: order\nprogress: order on d way\ndelivered:\n message: delivered\n send_after: '1'\n")
=> {"new_order"=>"order", "progress"=>"order on d way", "delivered"=>{"message"=>"delivered", "send_after"=>"1"}}