CSV到JSON转换组合集属于同一密钥

2024-09-24 06:31:56 发布

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

我正在尝试从csv文件生成json请求表单。REST Web服务需要此请求表单

示例输入文件:

Id,LineNo,Amt,ReceivedDt,FromDt,ToDate
123545,1,1000.00,2019-02-01T00:00:00,2019-02-01T00:00:00,2019-02-01T00:00:00
123545,2,200.00,2019-02-01T00:00:00,2019-02-01T00:00:00,2019-02-01T00:00:00
123546,1,200.00,2019-02-01T00:00:00,2019-02-01T00:00:00,2019-02-01T00:00:00

按照上述结构,文件中有更多记录。一个Id可以有多个行号,所有这些记录都应该在一个集合中

所需格式:

{
    "consumerData": {
        "clientCode": "CLINIC", 
        "instance": "P", 
        "userId": ""
    }, 
    "gfsauthdata": [
        {
            "ToDate": "2019-02-01T00:00:00", 
            "ReceivedDt": "2019-02-01T00:00:00", 
            "Id": "123545", 
            "LineNo": "1", 
            "Amt": "1000.00", 
            "FromDt": "2019-02-01T00:00:00"
        }, 
        {
            "ToDate": "2019-02-01T00:00:00", 
            "ReceivedDt": "2019-02-01T00:00:00", 
            "Id": "123545", 
            "LineNo": "2", 
            "Amt": "200.00", 
            "FromDt": "2019-02-01T00:00:00"
        }
    ]
},
{
    "consumerData": {
        "clientCode": "CLINIC", 
        "instance": "P", 
        "userId": ""
    }, 
    "gfsauthdata": 
        {
            "ToDate": "2019-02-01T00:00:00", 
            "ReceivedDt": "2019-02-01T00:00:00", 
            "Id": "123546", 
            "LineNo": "1", 
            "Amt": "200.00", 
            "FromDt": "2019-02-01T00:00:00"
        }
}

我无法将记录分为不同的组。请建议一些方法把它分开。我使用下面的代码将csv转换为json,但所有记录都是一组

代码:

import json,csv

with open('Test.csv') as f:
    inputfile = csv.DictReader(f)
    output = []
    for row in inputfile :
        #j = json.dumps(row, indent=4)
        output.append(row)

        data = {
            'consumerData': {
                        'clientCode': 'CLINIC',
                        'instance': 'P',
                        'userId': ''
                    },
            'gfsauthdata': output
           }

print(json.dumps(data, indent=4))

Tags: 文件csvinstanceidjson记录useridclinic
1条回答
网友
1楼 · 发布于 2024-09-24 06:31:56

您认为您的数据结构是错误的。您应该这样使用dict:

data[userid] = { 
        "type": "CLINIC", 
        "instance": "P",
        "gfsauthdata": [
        {
            "ToDate": "2019-02-01T00:00:00", 
            "ReceivedDt": "2019-02-01T00:00:00", 
            "Id": "123545", 
            "LineNo": "1", 
            "Amt": "1000.00", 
            "FromDt": "2019-02-01T00:00:00"
        }, 
        {
            "ToDate": "2019-02-01T00:00:00", 
            "ReceivedDt": "2019-02-01T00:00:00", 
            "Id": "123545", 
            "LineNo": "2", 
            "Amt": "200.00", 
            "FromDt": "2019-02-01T00:00:00"
        }
    ]}
}

相关问题 更多 >