Thread: ROR Parser class schrijven
-
14-03-2014, 15:36 #1Approved 9liver
- Registered
- 21/08/08
- Location
- Mechelen
- Posts
- 5,952
- iTrader
- 30 (97%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/4
ROR Parser class schrijven
Hoi!
Ik krijg van mijne webservice het volgende resultaat terug:
Nu is mijn vraag of je iets kunt maken dat het volgende doet in pseudocode:Code:[2] pry(#<User::EmailSettingsController>)> result.body => {"RESULT"=> {"MESSAGES"=> [{"MESSAGE"=> {"TYPE"=>"E", "ID"=>"HRRCF_WD_UI", "NUMBER"=>"025", "MESSAGE"=>"U kunt maximaal \"5\" jobagents creëren 1", "LOG_NO"=>"", "LOG_MSG_NO"=>"000000", "MESSAGE_V1"=>"5", "MESSAGE_V2"=>"1", "MESSAGE_V3"=>"", "MESSAGE_V4"=>"", "PARAMETER"=>"", "ROW"=>"0", "FIELD"=>"", "SYSTEM"=>""}}, {"MESSAGE"=> {"TYPE"=>"E", "ID"=>"HRRCF_WD_UI", "NUMBER"=>"025", "MESSAGE"=>"U kunt maximaal \"5\" jobagents creëren 2", "LOG_NO"=>"", "LOG_MSG_NO"=>"000000", "MESSAGE_V1"=>"5", "MESSAGE_V2"=>"2", "MESSAGE_V3"=>"", "MESSAGE_V4"=>"", "PARAMETER"=>"", "ROW"=>"0", "FIELD"=>"", "SYSTEM"=>""}}, {"MESSAGE"=> {"TYPE"=>"E", "ID"=>"HRRCF_WD_UI", "NUMBER"=>"025", "MESSAGE"=>"U kunt maximaal \"5\" jobagents creëren 3", "LOG_NO"=>"", "LOG_MSG_NO"=>"000000", "MESSAGE_V1"=>"5", "MESSAGE_V2"=>"3", "MESSAGE_V3"=>"", "MESSAGE_V4"=>"", "PARAMETER"=>"", "ROW"=>"0", "FIELD"=>"", "SYSTEM"=>""}}]}}
Code:message_list = ParseMessageObject(result.body) message_list.each do |message| puts message.message puts message.type end
StackOverflow Account
Pain is temporary. It may last a minute, or an hour, or a day, or a year, but eventually it will subside and something else will take its place. If I quit, however, it lasts forever.no votes
-
-
16-03-2014, 00:23 #2
T is zo basic Ruby 101 dat ik gewoon dirty example code ga geven, aan jou om het mooi te schrijven (en eigenlijk zou je t nog beter in een Struct of zelfs een dedicated mapper class moeten steken).
Code:# Gewoon voor t gemak van lezen content = result.body["RESULT"]["MESSAGES"] message_list = content.map do |item| # De eigenlijke hash met inhoud zit in de MESSAGE property message = item["MESSAGE"] # Zet van de hash alle keys om naar lowercase symbols symboled_message = Hash[message.map do |k,v| key = k.downcase.to_sym # type until Ruby 2.0 is een protected word # (Ruby 1.8+ geeft een deprecation warning, maar je kan type nog altijd niet overriden) # We maken er dus message_type van key = :message_type if key == :type [key, v] end] # http://www.ruby-doc.org/stdlib-1.9.3/libdoc/ostruct/rdoc/OpenStruct.html OpenStruct.new(symboled_message) end message_list.each do |message| puts message.message puts message.message_type endno votes
