2016-05-16 32 views
-2

從下面的JSON響應中,我只想得到bkg鍵的值並將所有這些值附加到列表中。從複雜的JSON數據中獲取所需的值

從這個特定的數據,我想最終結果爲[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' 
       } 
      } 
     } 
    } 
} 
+0

當我嘗試加載這json我得到'json.decoder.JSONDecodeError:期望屬性名稱用雙引號括起來:第1行第2列(char 1)'http://www.jsonlint.com也檢測到它是無效的 – Keatinge

+0

@Racialz由於「u」的用法,它不是有效的JSON。 http://stackoverflow.com/questions/13940272/python-json-loads-returns-items-prefixing-with-u – RoyaumeIX

回答

1

根據您的JSON格式,你可以這樣做:

your_json['data'].keys() 
0

希望這會有所幫助。

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'] 
+0

作爲@ user3579261說,如果你所有的'bkg'的價值是相同的你的鑰匙,那麼你只是需要做json ['data']。鍵。 –