添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

用python将复杂的json转换为CSV

0 人关注

我想用python把我的json文件转换成CSV文件,我看了很多网站,它们都只限于简单的json格式。 有谁知道对于有嵌套格式的复杂json文件,我们该怎么做?

"ttttt": "546 "ttttt, "reportId":" "erete": "umereteort", "adpPayrollResponse":{ "asOfDate":"2020-11-25", "governmentID":{ "id": "xxx-xx-gfdg", "ffffffCode":{ "ffffff": "ttttt", "代码": "gdfgf" "个人数据":{ "personfffffff":{ "},"givenffffff"。 "middleffffff":"S"。 "familyfffffff": "ttt" "通信":{ "电话":[ "emails":[ "emailUri":"jtttt" "internetAddresses":[ "address":{ "lineOne":"tttt", "cityfffffff":"Brgfgfgfdistow", "subdivisionCode1":{ "fffffff":"VA" "erete":"US", "erete":"fgfdgfdgfg" "main":[ "employerfffffff":"tttt", "legalEntityID":{ "legalEntityID":"fgfdgfgfdg", "erete":null "gfdgfgfg":{ "lineOne":"9500 fgfdgfdgfdg DR", "cityfffffff":"MANASSAS", "gfdgfgf":{ "fffffff":"VA" "fgdfgf":"gfdgdfg", "erete":"20110" "ffgfg":"2003-06-16", "erete":{ "fffffff":"Active", "code":"A" "fgfdggdf":{ "fffffff":"Regular Full-Time", "code":"FT" "erete":"Business Analyst", "fdgfdgfg":"gfgfgfg-06fgfgg16", "fgfdgfdgfg":"dfgfgfdg", "remunerationSummary":[ "payrollYear":2019, "baseRemunerationeeeeeee":{ "eeeeeee":114329.73, "cccccc":"tttt" "additionalRemunerations":[ "tttt":"tttt", "remunerationeeeeeee":{ "eeeeeee":22000.0, "cccccc":"tttt" "tttt":"tttt", "remunerationeeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "tttt":"YTD Others", "remunerationeeeeeee":{ "eeeeeee":40558.47, "cccccc":"tttt" "totalAnnualRemunerationeeeeeee":{ "eeeeeee":146688.0, "cccccc":"tttt" "netPayYTDeeeeeee":{ "eeeeeee":85395.04, "cccccc":"tttt" "payrollYear":2018, "baseRemunerationeeeeeee":{ "eeeeeee":31539.28, "cccccc":"tttt" "additionalRemunerations":[ "tttt":"tttt", "remunerationeeeeeee":{ "eeeeeee":10500.0, "cccccc":"tttt" "tttt":"tttt", "remunerationeeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "tttt":"YTD Others", "remunerationeeeeeee":{ "eeeeeee":11646.84, "cccccc":"tttt" "totalAnnualRemunerationeeeeeee":{ "eeeeeee":35301.3, "cccccc":"tttt" "netPayYTDeeeeeee":{ "eeeeeee":26036.31, "cccccc":"tttt" "paymentHistory":[ "tttt":true, "tttt":null, "dfsd":"2020-11-25", "payPeriod":{ "tttt":"2020-10-31", "tttt":"2020-11-13" "payeeeeeee":{ "dfsd":{ "eeeeeee":4640.36, "cccccc":"tttt" "basePayeeeeeee":{ "eeeeeee":4305.11, "cccccc":"tttt" "dfsd":{ "eeeeeee":2654.71, "cccccc":"tttt" "bonusPayeeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "overtimePayeeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "otherPayeeeeeee":{ "eeeeeee":335.25, "cccccc":"tttt" "tttt":"80.0", "tttt":{ "fffffff":"tttt", "code":null "tttt":{ "eeeeeee":4305.11, "cccccc":"tttt" "123":{ "fffffff":"Bi-Weekly", "code":"B" "de":[ "erete":{ "fffffff":"tttt 123", "code":null "deductioneeeeeee":{ "eeeeeee":704.17, "cccccc":"tttt" "erete":{ "fffffff":"State 123", "code":null "deductioneeeeeee":{ "eeeeeee":219.27, "cccccc":"tttt" "erete":{ "fffffff":"Local 123", "code":null "deductioneeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "erete":{ "fffffff":"Social security 123", "code":null "deductioneeeeeee":{ "eeeeeee":273.61, "cccccc":"tttt" "erete":{ "fffffff":"Retirement de", "code":null "deductioneeeeeee":{ "eeeeeee":215.26, "cccccc":"tttt" "erete":{ "fffffff":"Garnishment de", "code":null "deductioneeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "erete":{ "fffffff":"tttt", "code":null "deductioneeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "erete":{ "fffffff":"Benefit de", "code":null "deductioneeeeeee":{ "eeeeeee":234.22, "cccccc":"tttt" "erete":{ "fffffff":"SUI SDI VPDI 123", "code":null "deductioneeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "tttt":false, "tttt":null, "dfsd":"2020-11-10", "payPeriod":{ "tttt":"2020-10-17", "tttt":"2020-10-30" "payeeeeeee":{ "dfsd":{ "eeeeeee":4325.81, "cccccc":"tttt" "basePayeeeeeee":{ "eeeeeee":4305.11, "cccccc":"tttt" "dfsd":{ "eeeeeee":2457.8, "cccccc":"tttt" "bonusPayeeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "overtimePayeeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "otherPayeeeeeee":{ "eeeeeee":20.7, "cccccc":"tttt" "tttt":"80.0", "tttt":{ "fffffff":"tttt", "code":null "tttt":{ "eeeeeee":4305.11, "cccccc":"tttt" "123":{ "fffffff":"Bi-Weekly", "code":"B" "de":[ "depositeeeeeee":{ "eeeeeee":2457.8, "cccccc":"tttt" "dfsd":{ "tttt":"05100001", "name":"tttt", "tttt":"tttt" "de":[ "erete":{ "fffffff":"tttt 123", "code":null "deductioneeeeeee":{ "eeeeeee":628.68, "cccccc":"tttt" "erete":{ "fffffff":"State 123", "code":null "deductioneeeeeee":{ "eeeeeee":201.18, "cccccc":"tttt" "erete":{ "fffffff":"Local 123", "code":null "deductioneeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "erete":{ "fffffff":"Social security 123", "code":null "deductioneeeeeee":{ "eeeeeee":254.1, "cccccc":"tttt" "erete":{ "fffffff":"Retirement de", "code":null "deductioneeeeeee":{ "eeeeeee":215.26, "cccccc":"tttt" "erete":{ "fffffff":"Garnishment de", "code":null "deductioneeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "erete":{ "fffffff":"tttt", "code":null "deductioneeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "erete":{ "fffffff":"Benefit de", "code":null "deductioneeeeeee":{ "eeeeeee":234.22, "cccccc":"tttt" "erete":{ "fffffff":"SUI SDI VPDI 123", "code":null "deductioneeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "tttt":false, "tttt":null, "dfsd":"2020-10-14", "payPeriod":{ "tttt":"2020-09-19", "tttt":"2020-10-02" "payeeeeeee":{ "dfsd":{ "eeeeeee":4460.34, "cccccc":"tttt" "basePayeeeeeee":{ "eeeeeee":4305.11, "cccccc":"tttt" "dfsd":{ "eeeeeee":2537.29, "cccccc":"tttt" "bonusPayeeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "overtimePayeeeeeee":{ "eeeeeee":0.0, "cccccc":"tttt" "otherPayeeeeeee":{ "eeeeeee":155.23, "cccccc":"tttt" "tttt":"82.5", "tttt":{ "fffffff":"tttt", "code":null "tttt":{ "eeeeeee":4305.11, "cccccc":"tttt" "123":{ "fffffff":"Bi-Weekly", "code":"B" "de":[ "depositeeeeeee":{ "eeeeeee":2537.29, "cccccc":"tttt" "dfsd":{ "tttt":"05100001", "name":"tttt", "tttt":"tttt" "asaadaff":{ "availableHistorySourceCount":1, "includedHistorySourceCount":1, "availablePaymentHistoryMonths":{ "payrollDataMonthCount":26, "quarterlyDataMonthCount":0 "adpCorrelationId":"3941321f-844d-46f3-8b4a-7671c80e6e58", "payrollProvider":"adp"
4 个评论
如果你能提供一个更好形成的json,那就更好了。
假设你有复杂的嵌套json......你将需要把数据平铺成一个表格的形式......你基本上是从N个维度变成2个......因此,从我看来,N个前缀中的每一个都需要被表示成列。
recommend using json pretty print to indent nicely. stackoverflow.com/questions/12943819/...
尝试使用pandas将json转换为csv。 datatofish.com/json-string-to-csv-python
python
json
excel
export-to-csv
Mallikarjun
Mallikarjun
发布于 2020-12-08
1 个回答
frankr6591
frankr6591
发布于 2020-12-08
已采纳
0 人赞同

I tried to clean up a bit of your sample json (1st part) to see the data & test conversion to csv.

下面的通用函数将CSV列的名称空间平移。 你需要为csv的特定名称空间进行定制。 现在的描述还不清楚。

flatDict
def flatDict(newDict, oldDict, key=None):
    for k,v in oldDict.items():
        useKey = '_'+key if key is not None else ''
        newKey = k+useKey
        if type(v) is dict:
            flatDict(newDict, v, key=newKey)
            continue
        newDict[newKey] = v
nDict = {}
flatDict(nDict, jDict, key=None)
print(jso

Flatten JSON for CSV

"tttt": "546", "reportId": "", "erete": "umereteort", "asOfDate_adpPayrollResponse": "2020-11-25", "id_governmentID_adpPayrollResponse": "xxx-xx-gfdgfg", "fffffff_fffffffCode_governmentID_adpPayrollResponse": "tttt", "code_fffffffCode_governmentID_adpPayrollResponse": "gdfgf", "givenfffffff_personfffffff_personalData_adpPayrollResponse": "tttt", "middlefffffff_personfffffff_personalData_adpPayrollResponse": "S", "familyfffffff_personfffffff_personalData_adpPayrollResponse": "tttt", "telephones_communication_personalData_adpPayrollResponse": [ "emails_communication_personalData_adpPayrollResponse": [ "emailUri": "jtttt" "internetAddresses_communication_personalData_adpPayrollResponse": [], "lineOne_address_personalData_adpPayrollResponse": "tttt", "cityfffffff_address_personalData_adpPayrollResponse": "Brgfgfgfdistow", "fffffff_subdivisionCode1_address_personalData_adpPayrollResponse": "VA", "erete_address_personalData_adpPayrollResponse": "fgfdgfdgfg"

JSON SAMPLE FROM description above

以下是上面的一些json的拷贝,作为flatDict()的输入。

j1 = '''{ original json here } '''
jDict = json.loads(j1)
print(json.dumps(jDict, indent=4)) 

PRETTY PRINT

"tttt": "546", "reportId": "", "erete": "umereteort", "adpPayrollResponse": { "asOfDate": "2020-11-25", "governmentID": { "id": "xxx-xx-gfdgfg", "fffffffCode": { "fffffff": "tttt", "code": "gdfgf" "personalData": { "personfffffff": { "givenfffffff": "tttt", "middlefffffff": "S", "familyfffffff": "tttt" "communication": { "telephones": [ "emails": [ "emailUri": "jtttt" "internetAddresses": [] "address": { "lineOne": "tttt", "cityfffffff": "Brgfgfgfdistow", "subdivisionCode1": { "fffffff": "VA" "erete": "fgfdgfdgfg"