У меня есть вход JSON, который выглядит следующим образом:Python: Свести и Разбираем некоторые разделы JSON
> {"payment": {"payment_id": "AA340", "payment_amt": "20", "chk_nr": "321749", "clm_list": {"dtl": [{"clm_id": "1A2345", "name": "John", adj:{"adj_id":"W123","adj_cd":"45"}}, {"clm_id": "9999", "name": "Dilton", adj:{"adj_id":"X123","adj_cd":"5"}}]}}}
Мне нужен выход, чтобы выглядеть следующим образом:
{"clm_id": "1A2345",adj:{"adj_id":"W123"},"payment_amt": "20", "chk_nr": "321749"}
{"clm_id": "9999"adj:{"adj_id":"X123"},"payment_amt": "20", "chk_nr": "321749"}
Так код принимает один JSON-doc, анализирует раздел массива претензий и нормализует его, добавляя информацию об оплате в каждый раздел. Даже вложенный JSON анализируется.
Я могу разобрать данные, но не знаю, как нормализовать только определенный раздел данных.
Код ниже будет анализировать данные, но НЕ нормализуют
keep = ["payment","payment_id","payment_amt", "clm_list", "dtl", "clm_id","adj","adj_id"]
old_dict={"payment": {"payment_id": "AA340", "payment_amt": "20", "chk_nr": "321749", "clm_list": {"dtl": [{"clm_id": "1A2345", "name": "John", "adj": {"adj_id": "W123", "adj_cd": "45"}}, {"clm_id": "9999", "name": "Dilton", "adj": {"adj_id": "X123", "adj_cd": "5"}}]}}}
def recursively_prune_dict_keys(obj, keep):
if isinstance(obj, dict):
return dict([(k, recursively_prune_dict_keys(v, keep)) for k, v in obj.items() if k in keep])
elif isinstance(obj, list):
return [recursively_prune_dict_keys(item, keep) for item in obj]
else:
return obj
new_dict = recursively_prune_dict_keys(old_dict, keep)
conv_json=new_dict["payment"]
print json.dumps(conv_json)
Если вам нужна помощь, вам нужно опубликовать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) кода, который вы пробовали. – CAB
Обновлен с кодом – user3646519