如何生成用户需要的JSON-fi

2024-06-16 11:44:33 发布

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

我有一个JSON文件。我想改成用户要求的格式

你知道吗输入.json文件

[{
    "Data": [{

        "name": [" Devlopment", "34876", "Tez", "4578"],
        "results": [{
            "sum": 54
        }]
    }, {
        "name": ["production", "09876", "phonepay", "2312"],
        "results": [{
            "sum": 50.0
        }]
    }],
    "totalResult": {
        "results": [{
            "sum": 2027.0
        }]
    },
    "unknownGroup": {
        "results": [{
            "sum": 0.0
        }]
    },
    "performanceStats": {
        "fileReadCount": 1,
        "decompressionCount": 0,
        "decompressionCacheEnabledCount": 0


    },
    "metadata": {
        "eventTypes": ["Data_collection"],
        "eventType": "Data_collection",
        "openEnded": true



    }
 }, 
{
    "Data":

 [{
        "name": [" Quality_Analyst", "623456", "slicepay", "989766"],
        "results": [{
            "sum": 54
        }]
    }, {
        "name": ["Testing", "7654", "krazybee", "1234"],
        "results": [{
            "sum": 50.0
        }]
    }],
    "totalResult": {
        "results": [{
            "sum": 2027.0
        }]
    },
    "unknownGroup": {
        "results": [{
            "sum": 0.0
        }]
    },
    "performanceStats": {
        "fileReadCount": 1,
        "decompressionCount": 0,
        "decompressionCacheEnabledCount": 0


    },
    "metadata": {
        "eventTypes": ["Data_collection"],
        "eventType": "Data_collection",
        "openEnded": true



    }
 }]




I am expecting Output:
==============================

在python的帮助下生成一个新的JSON文件:

读取给定的JSON文件并生成一个新的JSON文件

 [{
    "Data": [{
        "Domain_name": " Devlopment",
        "Domain_Id": "34876",
        "app": "Tez",
        "appId": 4578,
        "sum": 54
    }, {
        "Domain_name": "production",
        "Domain_Id": "09876",
        "app": "phonepay",
        "appId": 2312,
        "sum": 54
    }],
    "totalResult": {
        "results": [{
            "sum": 2027.0
        }]
    },
    "unknownGroup": {
        "results": [{
            "sum": 0.0
        }]
    },
    "performanceStats": {
        "fileReadCount": 1,
        "decompressionCount": 0,
        "decompressionCacheEnabledCount": 0


    },
    "metadata": {
        "eventTypes": ["Data_collection"],
        "eventType": "Data_collection",
        "openEnded": true



    }
 }, {
    "Data":


        [{
            "name": " Quality_Analyst",
            "Domain_Id": "623456",
            "app": "slicepay",
            "appId": 989766,
            "sum": 54
        }, {
            "name": "Testing",

            "Domain_Id": "76554",
            "app": "krazybee",
            "appId": 1234,
            "sum": 54
        }],
    "totalResult": {
        "results": [{
            "sum": 2027.0
        }]
    },
    "unknownGroup": {
        "results": [{
            "sum": 0.0
        }]
    },
    "performanceStats": {
        "fileReadCount": 1,
        "decompressionCount": 0,
        "decompressionCacheEnabledCount": 0


    },
    "metadata": {
        "eventTypes": ["Data_collection"],
        "eventType": "Data_collection",
        "openEnded": true



    }
 }]

Tags: 文件namejsondatadomainresultscollectionmetadata
2条回答

嗨,

试试这个代码:这里是json\U dic在这个意义上你的JSON数据

def change_format(val_lst):
    key_lst = ['Domain_name','Domain_Id','app','appId']
    res_lst = []
    for dic in val_lst:
        temp_dic = {key_lst[i]:val for i,val in enumerate(dic['name'])}
        temp_dic['sum'] = dic['results'][0]['sum']
        res_lst.append(temp_dic)
    return res_lst    


print(list(map(lambda x:dict([(key,change_format(val_lst)) if key=='Data' else (key,val_lst) for key,val_lst in x.items()]),json_dic)))

结果:

[{'Data': [{'Domain_name': ' Devlopment', 'Domain_Id': '34876', 'app': 'Tez', 'appId': '4578', 'sum': 54}, {'Domain_name': 'production', 'Domain_Id': '09876', 'app': 'phonepay', 'appId': '2312', 'sum': 50.0}], 'totalResult': {'results': [{'sum': 2027.0}]}, 'unknownGroup': {'results': [{'sum': 0.0}]}, 'performanceStats': {'fileReadCount': 1, 'decompressionCount': 0, 'decompressionCacheEnabledCount': 0}, 'metadata': {'eventTypes': ['Data_collection'], 'eventType': 'Data_collection', 'openEnded': 'true'}}, {'Data': [{'Domain_name': ' Quality_Analyst', 'Domain_Id': '623456', 'app': 'slicepay', 'appId': '989766', 'sum': 54}, {'Domain_name': 'Testing', 'Domain_Id': '7654', 'app': 'krazybee', 'appId': '1234', 'sum': 50.0}], 'totalResult': {'results': [{'sum': 2027.0}]}, 'unknownGroup': {'results': [{'sum': 0.0}]}, 'performanceStats': {'fileReadCount': 1, 'decompressionCount': 0, 'decompressionCacheEnabledCount': 0}, 'metadata': {'eventTypes': ['Data_collection'], 'eventType': 'Data_collection', 'openEnded': 'true'}}]

使用我的函数来更改新的json数据的格式,我只使用列表理解来更改新的_数据。高兴吗编码

试试看:

json_data = ...  # load your json file

for item in json_data:
    new_data = []
    for data in item["Data"]:
        data_item = dict()
        data_item["Domain_name"] = data["name"][0]
        data_item["Domain_Id"] = data["name"][1]
        data_item["app"] = data["name"][2]
        data_item["appId"] = data["name"][3]
        data_item["sum"] = data["results"][0]["sum"]
        new_data.append(data_item)

    item["Data"] = new_data

输出:

[
  {'Data': [
        {'Domain_name': ' Devlopment',
         'Domain_Id': '34876',
         'app': 'Tez',
         'appId': '4578',
         'sum': 54},
        {'Domain_name': 'production',
         'Domain_Id': '09876',
         'app': 'phonepay',
         'appId': '2312',
         'sum': 50.0}],
   'totalResult': {'results': [{'sum': 2027.0}]}, 
   'unknownGroup': {'results': [{'sum': 0.0}]}, 
   'performanceStats': 
        {'fileReadCount': 1,
         'decompressionCount': 0,
         'decompressionCacheEnabledCount': 0},
   'metadata': 
           {'eventTypes': ['Data_collection'],
            'eventType': 'Data_collection',
            'openEnded': True}},
 {'Data': [
       {'Domain_name': ' Quality_Analyst',
        'Domain_Id': '623456',
        'app': 'slicepay',
        'appId': '989766',
        'sum': 54},
...

相关问题 更多 >