Python 将JSON转换为CSV

Python 将JSON转换为CSV,python,json,csv,Python,Json,Csv,在python中,我有一个由列表和字典组成的复杂对象层次结构。我想把它全部转换成CSV或其他某种数据库格式。非常感谢您对Python或Javascript的任何回答 我知道一个CSV文件(或表)只能代表我层次结构中的一个对象“级别”,因此解决方案需要创建多个文件 以下是一个例子: { "Person" : [{"name":"Greg","age":"35","car":["honda civic","ford focus"]}, {"name":"Ste

在python中,我有一个由列表和字典组成的复杂对象层次结构。我想把它全部转换成CSV或其他某种数据库格式。非常感谢您对Python或Javascript的任何回答

我知道一个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
基本上,这里唯一有趣的事情是分配新的ID,以便可以关联表中的行

干杯, 戴夫

分配新ID,以便可以关联表中的行

例如:

  • 为每行创建主键(PK)

  • 在车和人之间创建外键(FK)关系。看来汽车对人有一种“依赖”关系

  • 第一步。对JSON对象使用
    enumerate
    。这将为每个人提供方便的PK

    第二步。将每个人的便利PK用作您创建的每辆车的FK

    唯一令人不快的事情是将PK分配给汽车,因为在特定的数据结构上没有方便的方法来使用
    枚举
    。为此,你必须使用一个好的旧柜台


    试试这样的方法

    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()
    
    #现在您有了json到csv的格式文件,您可以使用awk

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

    我刚刚在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);
    });
    

    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);
    });