2017-07-14 1 views
0

Ich versuche, mehrere JSON-Dateien zu lesen und sie in einer Ruby-Datei zusammenzuführen. Hier ist, was ich zur Zeit für eine, die funktioniert:Mehrere JSON-Dateien zu einer Ruby-Datei zusammenfügen

require 'json' 
file = File.read(File.dirname(File.expand_path(__FILE__)) + '/../attributes.json') 
default.merge! JSON.parse(file) 

Nun, wenn ich die folgende Verzeichnisstruktur haben, in dem die attributes.json ist:

attributes.json 
Prod 
    -JSON1.json 
    -JSON2.json 
Test 
    -JSON1.json 
    -JSON2.json 

Wie würde ich erreichen Lesen dieser alle JSON-Dateien auf die eine Ruby-Datei? Ich nehme eine Art rekursive Schleife an, aber ich kann es nicht herausfinden.

+0

Nein, dies erfordert keine Rekursion in Ihrem Ruby-Code. Alles, was Sie brauchen, ist ['Dir.glob] (https://ruby-doc.org/core-2.2/Dir.html#method-c-glob) –

Antwort

0

Ich fand meine Antwort. Hier ist, was ich am Ende tun:

Find.find('/path/to/directory/') do |f| 
    next if File.extname(f) != ".json" 
    file = File.read(f) 
    default.merge! JSON.parse(file) 
end 

I Find verwendet, die für Dateien in einem beliebigen Verzeichnis suchen und dann passieren auf der Datei-ID es keine .json Erweiterung hat.

+2

Sie könnten' Dir.glob ('/ path/to/directory/*. json ') 'anstelle von' Find.find' - damit kannst du die 'next' Zeile loswerden. – jerhinesmith

Verwandte Themen