将新对添加到json文件

时间:2019-03-07 13:03:49

标签: python json dictionary

我有一个需要添加对的json文件,我将其转换为字典,但是现在我需要将新值放在特定的位置。

这是我转换的一些json文件:

 "rootObject": {
        "id": "6ff0010c-00fe-485b-b695-4ddd6aca4dcd",
        "type": "IDO_GEAR",
        "children": [
          {
            "id": "1dd94d1a-e52d-40b3-a82b-6db02a8fbbab",
            "type": "IDO_SYSTEM_LOADCASE",
            "children": [],
            "childList": "SYSTEMLOADCASE",
            "properties": [
              {


   "name": "IDCO_IDENTIFICATION",
            "value": "1dd94d1a-e52d-40b3-a82b-6db02a8fbbab"
          },
          {
            "name": "IDCO_DESIGNATION",
            "value": "Lastfall 1"
          },
          {
            "name": "IDSLC_TIME_PORTION",
            "value": 100
          },
          {
            "name": "IDSLC_DISTANCE_PORTION",
            "value": 100
          },
          {
            "name": "IDSLC_OPERATING_TIME_IN_HOURS",
            "value": 1
          },
          {
            "name": "IDSLC_OPERATING_TIME_IN_SECONDS",
            "value": 3600
          },
          {
            "name": "IDSLC_OPERATING_REVOLUTIONS",
            "value": 1
          },
          {
            "name": "IDSLC_OPERATING_DISTANCE",
            "value": 1
          },
          {
            "name": "IDSLC_ACCELERATION",
            "value": 9.81
          },
          {
            "name": "IDSLC_EPSILON_X",
            "value": 0
          },
          {
            "name": "IDSLC_EPSILON_Y",
            "value": 0
          },
          {
            "name": "IDSLC_EPSILON_Z",
            "value": 0
          },
          {
            "name": "IDSLC_CALCULATION_WITH_OWN_WEIGHT",
            "value": "CO_CALCULATION_WITHOUT_OWN_WEIGHT"
          },
          {
            "name": "IDSLC_CALCULATION_WITH_TEMPERATURE",
            "value": "CO_CALCULATION_WITH_TEMPERATURE"
          },
          {
            "name": "IDSLC_FLAG_FOR_LOADCASE_CALCULATION",
            "value": "LB_CALCULATE_LOADCASE"
          },
          {
            "name": "IDSLC_STATUS_OF_LOADCASE_CALCULATION",
            "value": false
          }

我想像这样添加ENTRY_ONE和ENTRY_TWO之类的东西:

"rootObject": {
    "id": "6ff0010c-00fe-485b-b695-4ddd6aca4dcd",
    "type": "IDO_GEAR",
    "children": [
      {
        "id": "1dd94d1a-e52d-40b3-a82b-6db02a8fbbab",
        "type": "IDO_SYSTEM_LOADCASE",
        "children": [],
        "childList": "SYSTEMLOADCASE",
        "properties": [
          {
            "name": "IDCO_IDENTIFICATION",
            "value": "1dd94d1a-e52d-40b3-a82b-6db02a8fbbab"
          },
          {
            "name": "IDCO_DESIGNATION",
            "value": "Lastfall 1"
          },
          {
            "name": "IDSLC_TIME_PORTION",
            "value": 100
          },
          {
            "name": "IDSLC_DISTANCE_PORTION",
            "value": 100
          },
          {
            "name": "ENTRY_ONE",
            "value": 100
          },
          {
            "name": "ENTRY_TWO",
            "value": 55
          },
          {
            "name": "IDSLC_OPERATING_TIME_IN_HOURS",
            "value": 1
          },
          {
            "name": "IDSLC_OPERATING_TIME_IN_SECONDS",
            "value": 3600
          },
          {
            "name": "IDSLC_OPERATING_REVOLUTIONS",
            "value": 1
          },
          {
            "name": "IDSLC_OPERATING_DISTANCE",
            "value": 1
          },
          {
            "name": "IDSLC_ACCELERATION",
            "value": 9.81
          },
          {
            "name": "IDSLC_EPSILON_X",
            "value": 0
          },
          {
            "name": "IDSLC_EPSILON_Y",
            "value": 0
          },
          {
            "name": "IDSLC_EPSILON_Z",
            "value": 0
          },
          {
            "name": "IDSLC_CALCULATION_WITH_OWN_WEIGHT",
            "value": "CO_CALCULATION_WITHOUT_OWN_WEIGHT"
          },
          {
            "name": "IDSLC_CALCULATION_WITH_TEMPERATURE",
            "value": "CO_CALCULATION_WITH_TEMPERATURE"
          },
          {
            "name": "IDSLC_FLAG_FOR_LOADCASE_CALCULATION",
            "value": "LB_CALCULATE_LOADCASE"
          },
          {
            "name": "IDSLC_STATUS_OF_LOADCASE_CALCULATION",
            "value": false
          }

如何添加条目,使它们位于IDCO_IDENTIFICATION标记下,而不位于rootObject下?

1 个答案:

答案 0 :(得分:1)

我看到您的json文件的方式,它应该位于rootObject下,因为一切都在该键下。缺少很多右括号和大括号。

因此,我只能假设您是要直接在IDCO_IDENTIFICATION(嵌套在rootObject下)下使用它。但这也不符合示例输出的要求。您在properties内,children内,rootObject内(而不是在IDCO_IDENTIFICATION下)拥有新的ENTRY_ONE和ENTRY_TWO。因此,我将按照示例输出中的要求进行操作。

import json

with open('C:/test.json') as f:
    data = json.load(f)

new_elements = [{"name":"ENTRY_ONE", "value":100},
                {"name":"ENTRY_TWO", "value":55}]

for each in new_elements:
    data['rootObject']['children'][0]['properties'].append(each)

with open('C:/test.json', 'w') as f:
    json.dump(data, f)

输出:

import pprint
pprint.pprint(data)
{'rootObject': {'children': [{'childList': 'SYSTEMLOADCASE',
                              'children': [],
                              'id': '1dd94d1a-e52d-40b3-a82b-6db02a8fbbab',
                              'properties': [{'name': 'IDCO_IDENTIFICATION',
                                              'value': '1dd94d1a-e52d-40b3-a82b-6db02a8fbbab'},
                                             {'name': 'IDCO_DESIGNATION',
                                              'value': 'Lastfall 1'},
                                             {'name': 'IDSLC_TIME_PORTION',
                                              'value': 100},
                                             {'name': 'IDSLC_DISTANCE_PORTION',
                                              'value': 100},
                                             {'name': 'IDSLC_OPERATING_TIME_IN_HOURS',
                                              'value': 1},
                                             {'name': 'IDSLC_OPERATING_TIME_IN_SECONDS',
                                              'value': 3600},
                                             {'name': 'IDSLC_OPERATING_REVOLUTIONS',
                                              'value': 1},
                                             {'name': 'IDSLC_OPERATING_DISTANCE',
                                              'value': 1},
                                             {'name': 'IDSLC_ACCELERATION',
                                              'value': 9.81},
                                             {'name': 'IDSLC_EPSILON_X',
                                              'value': 0},
                                             {'name': 'IDSLC_EPSILON_Y',
                                              'value': 0},
                                             {'name': 'IDSLC_EPSILON_Z',
                                              'value': 0},
                                             {'name': 'IDSLC_CALCULATION_WITH_OWN_WEIGHT',
                                              'value': 'CO_CALCULATION_WITHOUT_OWN_WEIGHT'},
                                             {'name': 'IDSLC_CALCULATION_WITH_TEMPERATURE',
                                              'value': 'CO_CALCULATION_WITH_TEMPERATURE'},
                                             {'name': 'IDSLC_FLAG_FOR_LOADCASE_CALCULATION',
                                              'value': 'LB_CALCULATE_LOADCASE'},
                                             {'name': 'IDSLC_STATUS_OF_LOADCASE_CALCULATION',
                                              'value': False},
                                             {'name': 'ENTRY_ONE',
                                              'value': 100},
                                             {'name': 'ENTRY_TWO',
                                              'value': 55}],
                              'type': 'IDO_SYSTEM_LOADCASE'}],
                'id': '6ff0010c-00fe-485b-b695-4ddd6aca4dcd',
                'type': 'IDO_GEAR'}}