-2

From the below JSON response, I just want to get the value of bkg key and append all these values in a list.

From this particular data, I want the final result as [244332, 1066459, 1354690, 1300150, 472468, 300420, 722942]

    { u 'data': {
        u '244332': {
            u 'hotel_data_node': {
                u '_id': 919824916605752258 L,
                u 'ids': {
                    u 'bkg': [u '244332'],
                    u 'voy': 9174725345440343760 L
                },
                u 'vendor_info': {
                    u 'vendor_id': u '244332',
                    u 'vendor': u 'bkg'
                }
            }
        },

        u '1066459': {
            u 'hotel_data_node': {
                u '_id': 2735067627304153118 L,
                u 'ids': {
                    u 'bkg': [u '1066459'],
                    u 'voy': 6032400126419907661 L
                },
                u 'vendor_info': {
                    u 'vendor_id': u '1066459',
                    u 'vendor': u 'bkg'
                }
            }
        },

        u '1354690': {
            u 'hotel_data_node': {
                u '_id': 2001829735393701201 L,
                u 'ids': {
                    u 'bkg': [u '1354690'],
                    u 'voy': 5694961161423235761 L
                },
                u 'vendor_info': {
                    u 'vendor_id': u '1354690',
                    u 'vendor': u 'bkg'
                }
            }
        },

        u '1300150': {
            u 'hotel_data_node': {
                u '_id': 2937209460187035224 L,
                u 'ids': {
                    u 'bkg': [u '1300150'],
                    u 'voy': 2447701064370670892 L
                },
                u 'vendor_info': {
                    u 'vendor_id': u '1300150',
                    u 'vendor': u 'bkg'
                }
            }
        },

        u '472468': {
            u 'hotel_data_node': {
                u '_id': 48272593877071744 L,
                u 'ids': {
                    u 'bkg': [u '472468'],
                    u 'voy': 658992090378786622 L
                },
                u 'vendor_info': {
                    u 'vendor_id': u '472468',
                    u 'vendor': u 'bkg'
                }
            }
        },

        u '300420': {
            u 'hotel_data_node': {
                u '_id': 2802488975195270489 L,
                u 'ids': {
                    u 'bkg': [u '300420'],
                    u 'voy': 8506688262306690280 L
                },
                u 'vendor_info': {
                    u 'vendor_id': u '300420',
                    u 'vendor': u 'bkg'
                }
            }
        },

        u '722942': {
            u 'hotel_data_node': {
                u '_id': 74159934735391119 L,
                u 'ids': {
                    u 'bkg': [u '722942'],
                    u 'voy': 2437681586480714100 L
                },
                u 'vendor_info': {
                    u 'vendor_id': u '722942',
                    u 'vendor': u 'bkg'
                }
            }
        }
    }
}
RoyaumeIX
  • 1,947
  • 4
  • 13
  • 37
Raman Balyan
  • 983
  • 2
  • 16
  • 32
  • When I try to load this json I get `json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)` http://www.jsonlint.com also detects it as invalid – Keatinge May 16 '16 at 07:34
  • @Racialz It's not a Valid JSON because of the "u" usage . http://stackoverflow.com/questions/13940272/python-json-loads-returns-items-prefixing-with-u – RoyaumeIX May 16 '16 at 07:58

3 Answers3

1

Based on your JSON format, you can just do:

your_json['data'].keys()
0

Hope this helps.

result = []
json = {u'data': {u'244332': {u'hotel_data_node': {u'_id': 919824916605752258L, u'ids': {u'bkg': [u'244332'], u'voy': 9174725345440343760L}, u'vendor_info': {u'vendor_id': u'244332', u'vendor': u'bkg'}}},

u'1066459': {u'hotel_data_node': {u'_id':2735067627304153118L, u'ids': {u'bkg': [u'1066459'], u'voy': 6032400126419907661L}, u'vendor_info': {u'vendor_id': u'1066459', u'vendor': u'bkg'}}},

u'1354690': {u'hotel_data_node': {u'_id': 2001829735393701201L, u'ids': {u'bkg': [u'1354690'], u'voy': 5694961161423235761L}, u'vendor_info': {u'vendor_id': u'1354690', u'vendor': u'bkg'}}},

u'1300150': {u'hotel_data_node': {u'_id': 2937209460187035224L, u'ids': {u'bkg': [u'1300150'], u'voy': 2447701064370670892L}, u'vendor_info': {u'vendor_id': u'1300150', u'vendor': u'bkg'}}},

u'472468': {u'hotel_data_node': {u'_id': 48272593877071744L, u'ids':{u'bkg': [u'472468'], u'voy': 658992090378786622L}, u'vendor_info': {u'vendor_id': u'472468', u'vendor': u'bkg'}}},

u'300420': {u'hotel_data_node': {u'_id': 2802488975195270489L, u'ids': {u'bkg': [u'300420'], u'voy': 8506688262306690280L},u'vendor_info': {u'vendor_id': u'300420', u'vendor': u'bkg'}}},

u'722942': {u'hotel_data_node': {u'_id': 74159934735391119L, u'ids': {u'bkg': [u'722942'], u'voy': 2437681586480714100L}, u'vendor_info': {u'vendor_id': u'722942', u'vendor': u'bkg'}}} }}

for key in json['data']: 
    result += json['data'][key]['hotel_data_node']['ids']['bkg']
print(result)
>>>[u'244332', u'1066459', u'1354690', u'1300150', u'472468', u'300420', u'722942']
Cheolho Jeon
  • 359
  • 1
  • 12
  • as @user3579261 said, if all your 'bkg' value is identical to your keys, then you just need to do json['data'].keys. – Cheolho Jeon May 16 '16 at 07:43
0

I guess this is a Duplicate question , Please refer to :

Accessing JSON elements

Also for 'u' sake :

Python: json.loads returns items prefixing with 'u'

Community
  • 1
  • 1
RoyaumeIX
  • 1,947
  • 4
  • 13
  • 37