2017-09-02 84 views
2

我有一个JSON数组是这样的:拼合JSON - 蟒蛇

[ 
    { 
     'id': 1, 
     'values': [ 
      { 
       'cat_key': 'ck1' 
      }, 
      { 
       'cat_key': 'ck2' 
      } 
     ] 
    }, 
    { 
     'id': 2, 
     'values': [ 
      { 
       'cat_key': ck3 
      } 
     ] 
    } 
] 

我要压平在球场上这阵values这样的:

[ 
    { 
     'id': 1, 
     'cat_key': 'ck1' 
    }, 
    { 
     'id': 1, 
     'cat_key': 'ck2' 
    }, 
    { 
     'id': 2, 
     'cat_key': 'ck3' 
    } 
] 

什么是最有效的方式来做到这一点在Python中?

回答

0
obj = json.loads(json_array) 
new_obj = [] 
for d in obj: 
    if d.get('values'): 
     for value in d['values']: 
      new_obj.append(dict(id=d['id'],cat_key=value['cat_key'])) 
new_json = json.dumps(new_obj) 
0

您的JSON是不是技术上有效的,但假设是,这是迭代的list

out = [] 
for d in your_json: 
    for v in d.get('values', []): 
     out.append({'id': d['id'], 'cat_key': v['cat_key']}) 
print json.dumps(out) 

结果:

[{"id": 1, "cat_key": "ck1"}, {"id": 1, "cat_key": "ck2"}, {"id": 2, "cat_key": "ck3"}]