반응형
CSV에서 JSON 루비 스크립트로?
csv 파일을 json 파일로 변환하는 Ruby 스크립트를 작성하는 방법을 아는 사람이 있습니까?
CSV 형식은 다음과 같습니다.
Canon,Digital IXUS 70,"Epic, Epic 100",3x,Yes (lockable),Yes (lockable),Yes
Canon, Digital IXUS 75,"Epic, Epic 100",3x,Yes (lockable),Yes (lockable),Yes
Canon,Digital IXUS 80,"Epic, Epic 100",3x,Yes (lockable),Yes (lockable),Yes
그리고 JSON은 다음과 같은 결과를 초래해야 합니다.
{ "aaData": [
[ "Canon" , "Digital IXUS 70" , "3x" , "Yes (lockable)" , "Yes (lockable)" , "Yes"],
[ "Canon" , "Digital IXUS 75" , "3x" , "Yes (lockable)" , "Yes (lockable)" , "Yes"],
[ "Canon" , "Digital IXUS 80" , "3x" , "Yes (lockable)" , "Yes (lockable)" , "Yes"]
]}
이것은 데이터가 CSV 데이터 문자열인 Ruby 1.9에서 쉽습니다.
require 'csv'
require 'json'
CSV.parse(data).to_json
시작하기:
Year,Make,Model,Description,Price
1997,Ford,E350,"ac, abs, moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1999,Chevy,"Venture ""Extended Edition, Very Large""",,5000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",4799.00
로.
[
{:year => 1997, :make => 'Ford', :model => 'E350', :description => 'ac, abs, moon', :price => 3000.00},
{:year => 1999, :make => 'Chevy', :model => 'Venture "Extended Edition"', :description => nil, :price => 4900.00},
{:year => 1999, :make => 'Chevy', :model => 'Venture "Extended Edition, Very Large"', :description => nil, :price => 5000.00},
{:year => 1996, :make => 'Jeep', :model => 'Grand Cherokee', :description => "MUST SELL!\nair, moon roof, loaded", :price => 4799.00}
]
수행할 작업:
csv = CSV.new(body, :headers => true, :header_converters => :symbol, :converters => :all)
csv.to_a.map {|row| row.to_hash }
#=> [{:year=>1997, :make=>"Ford", :model=>"E350", :description=>"ac, abs, moon", :price=>3000.0}, {:year=>1999, :make=>"Chevy", :model=>"Venture \"Extended Edition\"", :description=>"", :price=>4900.0}, {:year=>1999, :make=>"Chevy", :model=>"Venture \"Extended Edition, Very Large\"", :description=>nil, :price=>5000.0}, {:year=>1996, :make=>"Jeep", :model=>"Grand Cherokee", :description=>"MUST SELL!\nair, moon roof, loaded", :price=>4799.0}]
신용: https://technicalpickles.com/posts/parsing-csv-with-ruby
Josh의 예를 바탕으로 CSV::table을 사용하여 한 단계 더 나아갈 수 있습니다.
extracted_data = CSV.table('your/file.csv')
transformed_data = extracted_data.map { |row| row.to_hash }
이제 전화할 수 있습니다.to_json
바로 사용하거나 적절한 형식의 파일에 기록할 수 있습니다.
File.open('your/file.json', 'w') do |file|
file.puts JSON.pretty_generate(transformed_data)
end
레일즈 프로젝트에 있는 경우
CSV.parse(csv_string, {headers: true})
csv.map(&:to_h).to_json
제 해결책은 마리우의 해결책과 상당히 유사한 방식으로 끝났습니다.
require 'csv'
require 'json'
csv_table = CSV.parse(File.read('data.csv'), headers: true)
json_string = csv_table.map(&:to_h).to_json
File.open('data.json','w') do |f|
f.puts(json_string)
end
언급URL : https://stackoverflow.com/questions/5357711/csv-to-json-ruby-script
반응형
'UFO ET IT' 카테고리의 다른 글
QueryFailedError: "price" 열에 Null 값(TypeORM - Postgre)이 포함되어 있습니다.SQL (0) | 2023.06.22 |
---|---|
WebClient.DownloadString()이 고유 문자가 포함된 문자열을 반환합니다. (0) | 2023.06.22 |
뷰가 주어지면 뷰컨트롤러를 가져오려면 어떻게 해야 합니까? (0) | 2023.06.22 |
EPLUS C#에서 테이블 확장 (0) | 2023.06.22 |
단순 HTTP 서버에서 액세스 제어 사용 (0) | 2023.06.22 |