Humberto Adhemar
Humberto Adhemar

Reputation: 116

How to find a key in json and print it python

I have the next data:

{
"AlignedDataCtrlr": {
        "Enabled": false,
        "Measurands": {
          "readOnly": false,
          "value": []
        },
        "Interval": {
          "readOnly": false,
          "value": 50,
          "unit": "seconds"
        },
        "TxEndedMeasurands": {
          "readOnly": false,
          "value": []
        },
        "TxEndedInterval": {
          "readOnly": true,
          "value": 50,
          "unit": "seconds"
        }
      },
      "AuthCacheCtrlr": {
        "Enabled": false,
        "AuthCacheEnabled": {
          "readOnly": false,
          "value": true
        },
        "AuthCacheLifeTime": {
          "readOnly": true,
          "value": true
        }
      },
    ...
    }

And I want to print every variable that is not read only, for example print Measurands and its values, Interval, etc...

I start with

import json
file = open("./configs/configuration.json")
config = json.load(file)

    for each_ctrlr in config:
        for each_key in each_ctrlr:
            if 'readOnly' in each_key:
                print(each_key)

But there's nothing printing...

Upvotes: 0

Views: 48

Answers (1)

Lanbao
Lanbao

Reputation: 676

If you want to iterate through key-values at the same time, use .items()
If you just want to iterate over the key, use .keys()
If you just want to iterate over the values, use .values()

import json


with open("./configs/configuration.json", "r") as f:
    config = json.load(f)
    for k, v in config.items():
        for k2, v2 in v.items():
            if isinstance(v2, dict) and v2.get("readOnly"):
                print(k2, v2)

Output

TxEndedInterval {'readOnly': True, 'value': 50, 'unit': 'seconds'}
AuthCacheLifeTime {'readOnly': True, 'value': True}

Upvotes: 2

Related Questions