CEllio
CEllio

Reputation: 11

Adding new pairs to a json file

I have a json file I need to add pairs to, I convert it into a dict, but now I need to put my new values in a specific place.

This is some of the json file I convert:

 "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
          }

I want to add somthing like ENTRY_ONE and ENTRY_TWO like this:

"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
          }

How can I add the entries so that they are under the IDCO_IDENTIFICATION tag, and not under the rootObject?

Upvotes: 0

Views: 42

Answers (1)

chitown88
chitown88

Reputation: 28620

The way I see your json file, it WOULD be under rootObject as EVERYTHING is under that key. There's quite a few closing brackets and braces missing.

So I can only assume you are meaning you want it directly under IDCO_IDENTIFICATION (which is nested under rootObject). But that doesn't match what you have as your example output either. You have the new ENTRY_ONE and ENTRY_TWO within the properties, within the children, within the rootObject, not "under" IDCO_IDENTIFICATION. So I'm going to follow what you are asking for from your example output.

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)

Output:

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'}}

Upvotes: 1

Related Questions