如何使用python将JSON转换为.csv文件?我的json值的数据数组和字典格式如下:

2024-06-16 12:37:19 发布

您现在位置:Python中文网/ 问答频道 /正文

{
       "userName" : "Jhon",
        "status" : "success",
        "id" : 1234,
        "myData" : {
          "data1": [1,2,3,4],
             "data2": [1,2,3,4],
             "data3": [1,2,3,4],
             "data4": 25,
             "data5" : 12
             },
        "currentStatus" : true
}

如何将这些数据转换为tabler表单?在

^{pr2}$

表格格式应在图案上方。如何使用python实现这一点?谁能帮帮我吗。在


Tags: 数据idtruestatususernamesuccesstablerdata1
2条回答

不是python的答案,仅供参考,使用jq command line parser

jq -r '(["userName","status","id","data1",
          "data2","data3","data4","data5","currentStatus"],    # header string
        range(0;.myData.data1|length) as $i|                   # $i=table index 
        [.userName,.status,.id,.myData.data1[$i],
         .myData.data2[$i],.myData.data3[$i],
         .myData.data4,.myData.data5,.currentStatus]) |        # extract values
       @tsv                                                    # format as tab separated value
' file | column -t                                             # display in column

这假设data1数组的元素数对于所有其他数组都是相同的。在

要简化写入CSV文件时的循环,请将所有仅为数字的dataX项替换为该编号的4个副本的列表。这样你就可以用同样的方法索引它们。在

import json
import csv

json = '''
    {
           "userName" : "Jhon",
            "status" : "success",
            "id" : 1234,
            "myData" : {
                "data1": [1,2,3,4],
                "data2": [1,2,3,4],
                "data3": [1,2,3,4],
                "data4": 25,
                "data5" : 12
            },
            "currentStatus" : true
    }'''
data = json.loads(json)
for key, val in data['myData']:
    if type(val) is not list:
        data['myData'][key] = [val]*4 # convert scalar to list

with open("output.csv", "w") as f:
    csvfile = csv.writer(f)
    # write header row
    csvfile.writerow(['userName', 'Status', 'Id'] + data['myData'].keys() + ['currentStatus'])
    prefix = [data['userName'], data['status'], data['id']
    suffix = [data['currentStatus']]
    for i in range(4):
        row = prefix[:]
        for d in data['myData']:
            row.append(d[i])
        row += suffix
        csvfile.writerow(row)

也许有一种更简单的方法可以将列表字典转换为二维列表。在

相关问题 更多 >