Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何生成用户所需的JSON文件 我有一个JSON文件。我想更改为用户要求的格式。 input.json文件 在python的帮助下生成一个新的JSON文件:_Python_Python 3.x - Fatal编程技术网

如何生成用户所需的JSON文件 我有一个JSON文件。我想更改为用户要求的格式。 input.json文件 在python的帮助下生成一个新的JSON文件:

如何生成用户所需的JSON文件 我有一个JSON文件。我想更改为用户要求的格式。 input.json文件 在python的帮助下生成一个新的JSON文件:,python,python-3.x,Python,Python 3.x,读取给定的JSON文件并创建一个新的JSON文件 [{ "Data": [{ "Domain_name": " Devlopment", "Domain_Id": "34876", "app": "Tez", "appId": 4578, "sum": 54 }, { "Domain_name": "production", "Domain_Id": "09876",

读取给定的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



    }
 }]
试试看:

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},
...
Hii,

尝试以下代码:这里是json_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'}}]

使用我的函数来更改新的\u json数据的格式,我只使用列表理解来更改新的\u数据。快乐编码

到目前为止您尝试了什么?如果您询问是否可能,是的,python是图灵完整的,可以完成这一点以及您可以想象的每一个计算。到目前为止,我尝试了这个方法,将json def format_json():与open(“input.json”)一起导入为f:data=f.read()data1=json.loads(data)new_list=[]对于数据1[“facets”]:print(len(d))r={}r[“name”]=d[“name”][0],r[“Id”]=d[“name”][1],r[“Appname”]=d[“name”][2],r[“appid”]=d[“name”][3],r[“totalsum”]=d[“results”][0][“sum”]new sum”]new u-list.append(r)print(new u-list)格式我无法查看整个结果对象、未知组、性能统计数据和元数据。我只能看到这些[{'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}]。。。。。。。。。
[{'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'}}]