2016-08-08 3 views
0

현재 API 호출에서 여러 JSON 객체가 포함 된 .txt 파일을 사용하고 있습니다. 이러한 모든 개체를 .csv 파일로 구문 분석하는 방법을 찾고 있습니다. 과거에는 하나의 JSON 객체를 .csv로 가져올 수 있었지만 여러 번 수행하는 방법을 잘 모르겠습니다.Ruby를 사용하여 여러 JSON 객체를 CSV로 파싱

샘플 JSON : 단지 하나의 JSON 개체에 작동하는 것 같다 있지만

[{"field1":["value1"], "field2": ["value2"]}] 
[{"field1":["value1"], "field2": ["value2"]}] 
[{"field1":["value1"], "field2": ["value2"]}] 

나는 현재 CSV로 JSON을 밀어 사용하고 코드는 다음과 같습니다. 내가 필요로하는 것은 각 객체를 통과시키고 루프를 반복하는 일종의 루프이다.

require 'csv' 
require 'json' 

CSV.open("sample.csv", "w") do |csv| 
csv << ["field1", 
"field2" 
] 
    JSON.parse(File.open("json.txt").read).each do |hash| #open json to parse 

    csv << hash.values 

    end 
end 

누구든지 내게 어떤 제안을 줄 수 있습니까? 여러 객체 파싱을위한 솔루션을 찾았지만 CSV 부분에 도움이되는 솔루션은 없습니다. 이 비록

+0

출력이 지금 무엇을 추가? 당신이 값을 풀 필요가있는 것처럼 보입니다. hash.values.flatten을 시도해보십시오. 해시도 배열이어야하므로 값을 가져와야합니다. –

+0

여러 개의 JSON 문서 파일이 있습니다. 예제 데이터 에서처럼 파일에 각 행에 단일 JSON 문서가있는 경우'read' 대신 'foreach'를 사용하고 각 행을 개별적으로 처리하십시오. JSON의 작성자 인 경우 출력을 수정하여 해시 (JSON으로 인코딩 됨)의 단일 배열이어야하는 적절한 JSON을 생성해야합니다. 일단 선을 파싱 한 다음 필요에 따라 선을 CSV로 전달하십시오. –

+0

@IvanYouroff 지금 당장 사용하는 코드는 하나의 JSON 객체에서 CSV 파일을 성공적으로 생성 할 수 있습니다. –

답변

0
require 'csv' 
require 'json' 

CSV.open("sample.csv", "w") do |csv| 
    csv << ["field1", "field2"] 
    File.open("json.txt").each do |line| 
    csv << JSON.parse(line).first.values.flatten 
    end 
end 

은 형식 변경을 고려 정말 안전하지 않다, 그래서 나는 몇 가지 검증

관련 문제