2010-10-20 13 views
5

में पाइथन में मेरे पास सूचियों और शब्दकोशों से बना एक जटिल ऑब्जेक्ट पदानुक्रम है। मैं इसे सीएसवी या किसी अन्य प्रकार के डेटाबेस प्रारूप में थूकना चाहता हूं। पायथन या जावास्क्रिप्ट में किसी भी उत्तर की बहुत सराहना की।JSON को CSV

मैं समझता हूं कि एक सीएसवी फ़ाइल (या तालिका) केवल मेरे पदानुक्रम में ऑब्जेक्ट के 'स्तर' का प्रतिनिधित्व कर सकती है, इसलिए समाधान को कई फाइलें बनाने की आवश्यकता होगी।

यहाँ एक उदाहरण है:

{ 
    "Person" : [{"name":"Greg","age":"35","car":["honda civic","ford focus"]}, 
       {"name":"Steve","age":"28", "car":["mazda 323", "toyota camry"]}] 
} 

बन जाएगा

Person.csv: 
id,name,age 
1,Greg,35 
2,Steve,28 

car.csv: 
id,Person_id,value 
1,1,honda civic 
2,1,ford focus 
3,2,mazda 323 
4,2,toyota camry 

मूल रूप से केवल एक चीज दिलचस्प यहाँ पर जा रहा नया आईडी का काम इतना है कि तालिका में पंक्तियों संबद्ध किया जा सकता है।

चीयर्स, डेव ताकि तालिका में पंक्तियों संबद्ध किया जा सकता नया आईडी के

उत्तर

0

काम।

में के रूप में:

  1. प्रत्येक पंक्ति के लिए एक प्राथमिक कुंजी (पी) बनाएँ।

  2. कार और व्यक्ति के बीच एक विदेशी कुंजी (एफके) संबंध बनाएं। ऐसा लगता है कि कार पर व्यक्ति पर "आश्रित" संबंध है।

चरण 1. अपने JSON ऑब्जेक्ट्स पर enumerate का उपयोग करें। यह आपको प्रत्येक व्यक्ति के लिए एक आसान पीके देगा।

चरण 2. प्रत्येक व्यक्ति के लिए आपके द्वारा बनाई गई प्रत्येक कार के लिए एफके के रूप में आसान पीके का उपयोग करें।

केवल एक चीज अप्रिय है कि वहाँ के बाद से अपने विशेष डेटा संरचना पर enumerate उपयोग करने के लिए कोई आसान तरीका पी के बताए कारें है। इसके लिए, आपको एक अच्छे पुराने काउंटर का उपयोग करना होगा।

http://docs.python.org/library/functions.html#enumerate

2

कुछ इस तरह की कोशिश करो।

json_dict = { 
    "Person" : [{"name":"Greg","age":"35","car":["honda civic","ford focus"]}, 
       {"name":"Steve","age":"28", "car":["mazda 323", "toyota camry"]}] 
} 

for entity in json_dict: 
    csv_file = open('%s.csv' % entity, 'wb') 
    headers = a[entity][0].keys() 
    csv_writer = csv.DictWriter(csv_file, headers) 
    map(csv_writer.writerow, json_dict[entity]) 
    csv_file.close() 

# अब आपके पास प्रारूपण के लिए सीएसवी फ़ाइल के लिए आपका जेसन है, आप awk का उपयोग कर सकते हैं;

awk -F , '{print NR ", " $2 ", " $3 }' Person.csv > person.csv 

...

0
import json 
import csv 
temp = json.load(open('filename.json','r')) 
output =[] 
for each in temp: 
    row = {} 
    row['field1'] =each['field1'] 
    row['field2'] = each['field2'] 
    output.append(row) 
file = open("filename_destination.csv", "w") 

fileWriter = csv.writer(file , delimiter=",",quotechar='"', quoting=csv.QUOTE_MINIMAL) 

Header = ['field1','field2'] 

fileWriter.writerow(Header) 

for x in output: 
te = [x['field1'],x['field2']] 
fileWriter.writerow(te) 
file.close() 
0

मैं सिर्फ एक मॉड्यूल कि इस प्रक्रिया Node.js

var jsonexport = require('jsonexport'); 

var contacts = [{ 
    name: 'Bob', 
    lastname: 'Smith', 
    family: { 
     name: 'Peter', 
     type: 'Father' 
    } 
},{ 
    name: 'James', 
    lastname: 'David', 
    family:{ 
     name: 'Julie', 
     type: 'Mother' 
    } 
},{ 
    name: 'Robert', 
    lastname: 'Miller', 
    family: null, 
    location: [1231,3214,4214] 
},{ 
    name: 'David', 
    lastname: 'Martin', 
    nickname: 'dmartin' 
}]; 

jsonexport(contacts,function(err, csv){ 
    if(err) return console.log(err); 
    console.log(csv); 
}); 

https://www.npmjs.com/package/jsonexport

में आसान बना देता है जारी किया