У меня есть рабочий сценарий, который прекрасно преобразует JSON-файлы в CSV-файлы, однако я пытаюсь отредактировать сценарий, чтобы внести некоторые изменения в CSV-файл перед сохранением, в настоящее время безуспешно.
Вот мой текущий скрипт преобразования:
require 'csv'
require 'json'
require 'set'
def get_recursive_keys(hash, nested_key=nil)
hash.each_with_object([]) do |(k,v),keys|
k = "#{nested_key}.#{k}" unless nested_key.nil?
if v.is_a? Hash
keys.concat(get_recursive_keys(v, k))
else
keys << k
end
end
end
json = JSON.parse(File.open(ARGV[0]).read)
headings = Set.new
json.each do |hash|
headings.merge(get_recursive_keys(hash))
end
headings = headings.to_a
CSV.open(ARGV[0] + '.csv', 'w') do |csv|
csv << headings
json.each do |hash|
row = headings.map do |h|
v = hash.dig(*h.split('.'))
v.is_a?(Array) ? v.join(',') : v
end
csv << row
end
end
Который я запускаю с этой командой:
for file in directory/*; do ruby json-to-csv.rb "$file"; done
Как мне отредактировать этот скрипт на:
- Удалить столбцы с определенными заголовками, такими как «Score» и «Original_name»
- (изменить порядок оставшихся столбцов в алфавитном порядке слева направо) - если возможно?
Пока все, что я пробовал, полностью нарушает сценарий - где лучше всего начать вносить эти изменения?