Ruby从文件构建哈希
我正在使用一个web服务,使用Savon处理+-1000个付费请求,并将请求解析为csv文件。 如果解析失败,我将xml.hash响应保存在一个文件中。 如何初始化保存到文件中的哈希?或者我应该保存在XML中,然后让savon再次将其转换为散列 额外信息:Ruby从文件构建哈希,ruby,xml,webservice-client,savon,Ruby,Xml,Webservice Client,Savon,我正在使用一个web服务,使用Savon处理+-1000个付费请求,并将请求解析为csv文件。 如果解析失败,我将xml.hash响应保存在一个文件中。 如何初始化保存到文件中的哈希?或者我应该保存在XML中,然后让savon再次将其转换为散列 额外信息: client = Savon.client do wsdl "url" end response = client.call(:read_request) do message "dat:number" => numbe
client = Savon.client do
wsdl "url"
end
response = client.call(:read_request) do
message "dat:number" => number
end
我使用response.hash来构建/解析我的csv数据。例:
name = response.hash[:description][:name]
如果构建失败,我会考虑将response.hash保存到一个文件中。但问题是我不知道如何重用保存的响应XML/Hash,以便使用保存的响应运行更新版本的构建/解析 如果您的代码希望使用/操作如上所示的ruby哈希,那么如果您希望保存Savon响应,那么请使用json gem并执行以下操作:
require 'json'
File.open("responseX.json","w") do |f|
f << response.hash.to_json
end
如果您的代码希望使用/操作如上所示的ruby哈希,那么如果您希望保存Savon响应,那么请使用json gem并执行以下操作:
require 'json'
File.open("responseX.json","w") do |f|
f << response.hash.to_json
end
您希望将散列序列化为文件,然后再次将其反序列化 您可以通过或和二进制via在文本中执行此操作 元帅 封送数据有一个主版本号和次版本号,因此如果封送数据版本发生变化,不能保证总是加载到另一个Ruby中 亚马尔 JSON
有趣的是,YAML很慢,Marshall和JSON很快。您希望将哈希序列化为一个文件,然后再次反序列化它 您可以通过或和二进制via在文本中执行此操作 元帅 封送数据有一个主版本号和次版本号,因此如果封送数据版本发生变化,不能保证总是加载到另一个Ruby中 亚马尔 JSON
有趣的是,YAML很慢,Marshall和JSON很快。您必须提供一些示例数据和/或示例代码。这里没有人有心灵感应。我补充了额外的解释。归结起来就是:我想把一个变量的值保存到一个文件中,以便以后可以恢复该变量以供重用。尽可能具体。可能的副本您必须提供一些示例数据和/或一些示例代码。这里没有人有心灵感应。我补充了额外的解释。归结起来就是:我想把一个变量的值保存到一个文件中,以便以后可以恢复该变量以供重用。尽可能具体。可能重复的
def serialize_marshal filepath, object
File.open( filepath, "wb" ) {|f| Marshal.dump object, f }
end
def deserialize_marshal filepath
File.open( filepath, "rb") {|f| Marshal.load(f)}
end
require 'yaml'
def serialize_yaml filepath, object
File.open( filepath, "w" ) {|f| YAML.dump object, f }
end
def deserialize_yaml filepath
File.open( filepath, "r") {|f| YAML.load(f) }
end
require 'json'
def serialize_json filepath, object
File.open( filepath, "w" ) {|f| JSON.dump object, f }
end
def deserialize_json filepath
File.open( filepath, "r") {|f| JSON.load(f)}
end