Home > OS >  How to filter nested json array on Python
How to filter nested json array on Python

Time:03-11

I have a json array on python which I want to filter based on the value of : my_json_array['models']['variants']['condition']['type']

my json array looks like the following :

my_json_array = [
 {'id': 1,
 'models': [
   {'color': {'code': '#626262', 'name': 'Gray'},
   'variants': [{'id': 1,
     'condition': [{'id': 1,
       'type': 'type1',
        'value': 14900},
      {'id': 2,
       'type': 'type2',
        'value': 14000}]]
]
}]

I'm looking for a method to remove condition items with type = type2. The output should look like this :

my_json_array = [{
 'id': 1,
 'models': [
   {'color': {'code': '#626262', 'name': 'Gray'},
   'variants': [{'id': 1,
     'condition': [{'id': 1,
       'type': 'type1',
        'value': 14900}]]
]
}]

CodePudding user response:

Do you mean this?

my_json_array = [
  {
    'id': 1,
    'models': [
      {
        'color': {'code': '#626262', 'name': 'Gray'},
        'variants': [
          {
            'id': 1,
            'condition': [
              {
                'id': 1,
                'type': 'type1',
                'value': 14900
              },
              {
                'id': 2,
                'type': 'type2',
                'value': 14000
              }
            ]
          }
        ]
      }
    ]
  }
]
for mydict in my_json_array:
  for model in mydict['models']:
    for variant in model['variants']:
      for condition in variant['condition']:
        if condition['type']=="type2":
          variant['condition'].remove(condition)
print(my_json_array) # [{'id': 1, 'models': [{'color': {'code': '#626262', 'name': 'Gray'}, 'variants': [{'id': 1, 'condition': [{'id': 1, 'type': 'type1', 'value': 14900}]}]}]}]
  • Related