/ / pulizia JSON - rimozione delle proprietà non necessarie con Ruby - ruby

pulizia JSON - rimozione di proprietà non necessarie con Ruby - rubino

Ho un file JSON che è di circa 1 MB (menu.json). Ci sono molte proprietà al suo interno che spero di rimuovere.

Ho un file di testo: Strings.txt - questo contiene nomi di proprietà che sono note necessarie in JSON

Sto cercando di scorrere attraverso il mio file JSON riga per riga. Se una riga contiene una stringa trovata in strings.txt, desidero rimuovere quella riga.

Ecco il mio codice:

tmp = File.open("clean.json", "w")

File.open("menu.json") do |json|
File.open("strings.txt") do |x|
tmp.puts json.each_line unless json.include? x
end
end

Il risultato scritto in clean.json è #<Enumerator:0x0077ff36b04b468>

Qualcuno potrebbe dirmi cosa sto facendo di sbagliato? Questa è la mia prima sceneggiatura di Ruby.

Contenuti di strings.txt:

Item1
Item2
Item3

Si scopre che Item1, Item2 o Item3 vengono letti come \ "Item1 \"

Devo capire perché questo sta accadendo e come gestirlo.

risposte:

0 per risposta № 1

each_line senza un blocco restituisce un enumeratore, che è quello che stai scrivendo nel tuo file di output. Quello che vuoi è qualcosa di più simile a questo:

tmp = File.open("clean.json", "w")

File.open("menu.json") do |json|
File.open("strings.txt") do |x|
json.each_line { |line| tmp.puts(line) unless line.include?(x) }
end
end
tmp.close

Questo è ovviamente piuttosto costoso poiché passerà attraverso tutto menu.json esattamente quante volte strings.txt ha delle linee.