2017-06-26 4 views
0

Ich bin neu in Ruby und habe Schwierigkeiten mit dem Durchschleifen von tief verschachtelten Hashes und Arrays.Loop spezifische Werte von tief verschachtelten Hash und Array

Sagen wir, ich habe folgende JSON:

{ 
    "Resume":{ 
       .... data .... 
     }, 
     "StructuredXMLResume":{ 
     "ContactInfo":{ 
       .... data .... 
       } 
      ] 
     }, 
     "EmploymentHistory":{ 
      "EmployerOrg":[ 
       { 
        "EmployerOrgName":"ABC Corp.", 
        "PositionHistory":[ 
        { 
       .... data .... 
        ] 
       }, 
       { 
        "EmployerOrgName":"National Geo.", 
        "PositionHistory":[ 
        { 
      .... data .... 
          } 
         ] 

        } 
        ] 
       } 
      ] 
     } 

.

resume.["Resume"]["StructuredXMLResume"]["EmploymentHistory"]["EmployerOrg"][0]["EmployerOrgName"] 

gibt mir ABC Corp. und

resume.["Resume"]["StructuredXMLResume"]["EmploymentHistory"]["EmployerOrg"][1]["EmployerOrgName"] 

gibt mir National Geo.

Wie kann ich Schleife jedes EmployerOrgName zu drucken?

+0

Auch sollte ich 'each' oder' map' verwenden? Ich bin verwirrt mit dem Unterschied zwischen beidem. – cruisertom

Antwort

2

Verwendung:

resume.["Resume"]["StructuredXMLResume"]["EmploymentHistory"]["EmployerOrg"].each do |employer_org| 
    puts employer_org["EmployerOrgName"] # or whatever you want to do with the employer_org hash 
end 
0

Sie einen Enumerator verwenden kann, wie jeder auf jedes „Dinge“, dass entweder ist oder verhält sich wie ein Array/Hash-Objekt, so dass in diesem Fall, dass Sie wünschen würden:

all_employerorgs = resume.["Resume"]["StructuredXMLResume"]["EmploymentHistory"]["EmployerOrg"] 
# which is an array of hashes that then you can iterate through 
# you could iterate directly on that but for readibility 
# I would always assign it to a var 
all_employerorgs.each do |employerorg| 
    puts employerorg['EmployerOrgName'] 
end 
Verwandte Themen