การใช้jqการเข้ารหัส JSON โดยพลการอาร์เรย์ของวัตถุตื้นจะแปลงเป็น CSV ได้อย่างไร
มี Q & As มากมายบนไซต์นี้ที่ครอบคลุมโมเดลข้อมูลเฉพาะที่ฮาร์ดโค้ดฟิลด์ แต่คำตอบสำหรับคำถามนี้ควรใช้งานได้กับ JSON ใด ๆ โดยมีข้อ จำกัด เพียงอย่างเดียวคืออาร์เรย์ของออบเจ็กต์ที่มีคุณสมบัติสเกลาร์ (ไม่มีลึก / ซับซ้อน / วัตถุย่อยเนื่องจากการทำให้แบนเป็นอีกคำถามหนึ่ง) ผลลัพธ์ควรมีแถวส่วนหัวที่ให้ชื่อเขตข้อมูล ค่ากำหนดจะได้รับสำหรับคำตอบที่คงลำดับฟิลด์ของอ็อบเจ็กต์แรกไว้ แต่ไม่ใช่ข้อกำหนด ผลลัพธ์อาจล้อมรอบเซลล์ทั้งหมดด้วยเครื่องหมายอัญประกาศคู่หรือใส่เฉพาะเซลล์ที่ต้องการการอ้างอิงเท่านั้น (เช่น 'a, b')
ตัวอย่าง
อินพุต:
[ {"code": "NSW", "name": "New South Wales", "level":"state", "country": "AU"}, {"code": "AB", "name": "Alberta", "level":"province", "country": "CA"}, {"code": "ABD", "name": "Aberdeenshire", "level":"council area", "country": "GB"}, {"code": "AK", "name": "Alaska", "level":"state", "country": "US"} ]
ผลลัพธ์ที่เป็นไปได้:
code,name,level,country NSW,New South Wales,state,AU AB,Alberta,province,CA ABD,Aberdeenshire,council area,GB AK,Alaska,state,US
ผลลัพธ์ที่เป็นไปได้:
"code","name","level","country" "NSW","New South Wales","state","AU" "AB","Alberta","province","CA" "ABD","Aberdeenshire","council area","GB" "AK","Alaska","state","US"
อินพุต:
[ {"name": "bang", "value": "!", "level": 0}, {"name": "letters", "value": "a,b,c", "level": 0}, {"name": "letters", "value": "x,y,z", "level": 1}, {"name": "bang", "value": "\"!\"", "level": 1} ]
ผลลัพธ์ที่เป็นไปได้:
name,value,level bang,!,0 letters,"a,b,c",0 letters,"x,y,z",1 bang,"""!""",0
ผลลัพธ์ที่เป็นไปได้:
"name","value","level" "bang","!","0" "letters","a,b,c","0" "letters","x,y,z","1" "bang","""!""","1"
json2csv
อยู่ที่stackoverflow.com/questions/57242240/…