我想用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"用python将复杂的json转换为CSV
0
人关注
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
Mallikarjun
发布于
2020-12-08
1
个回答
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的特定名称空间进行定制。 现在的描述还不清楚。
flatDictdef 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"