Reputation: 185
I have below code and output data.
json_rdd = data.toJSON().collect()
json_ls = [json.loads(x) for x in json_rdd]
[{'status': 'Yes', 'rec_id': {'oid': '5d9f5434523b7e0719'}, 'lot_number': '8be4-400d-a0c7-7214132dfd48'},
{'status': 'Yes', 'rec_id': {'oid': '5d9f5434523b7e071a'}, 'lot_number': '8be4-400d-a0c7-7214132dfd48'},
{'status': 'Take', 'rec_id': {'oid': '5d9f9f13523b7e0d89'}, 'lot_number': 'db53-4420-887f-0e9bb1364e2e'},
{'status': 'Take', 'rec_id': {'oid': '5d9f9f14523b7e0d8a'}, 'lot_number': 'db53-4420-887f-0e9bb1364e2e'}]
I need to change the above data like below (oid should be changed as rec_id), can anyone help me how to do that?
[{'status': 'Yes', 'rec_id': '5d9f5434523b7e0719', 'lot_number': '8be4-400d-a0c7-7214132dfd48'},
{'status': 'Yes', 'rec_id': '5d9f5434523b7e071a', 'lot_number': '8be4-400d-a0c7-7214132dfd48'},
{'status': 'Take', 'rec_id': '5d9f9f13523b7e0d89', 'lot_number': 'db53-4420-887f-0e9bb1364e2e'},
{'status': 'Take', 'rec_id': '5d9f9f14523b7e0d8a', 'lot_number': 'db53-4420-887f-0e9bb1364e2e'}]
Upvotes: 0
Views: 41
Reputation: 4640
Simply iterate over the list json_ls
and for each item (which is a dictionary, lets call it d
), set d['rec_id'] = d['rec_id']['oid']
.
json_ls = [
{'status': 'Yes', 'rec_id': {'oid': '5d9f5434523b7e0719'}, 'lot_number': '8be4-400d-a0c7-7214132dfd48'},
{'status': 'Yes', 'rec_id': {'oid': '5d9f5434523b7e071a'}, 'lot_number': '8be4-400d-a0c7-7214132dfd48'},
{'status': 'Take', 'rec_id': {'oid': '5d9f9f13523b7e0d89'}, 'lot_number': 'db53-4420-887f-0e9bb1364e2e'},
{'status': 'Take', 'rec_id': {'oid': '5d9f9f14523b7e0d8a'}, 'lot_number': 'db53-4420-887f-0e9bb1364e2e'},
]
for d in json_ls:
d['rec_id'] = d['rec_id']['oid']
assert json_ls == [
{'status': 'Yes', 'rec_id': '5d9f5434523b7e0719', 'lot_number': '8be4-400d-a0c7-7214132dfd48'},
{'status': 'Yes', 'rec_id': '5d9f5434523b7e071a', 'lot_number': '8be4-400d-a0c7-7214132dfd48'},
{'status': 'Take', 'rec_id': '5d9f9f13523b7e0d89', 'lot_number': 'db53-4420-887f-0e9bb1364e2e'},
{'status': 'Take', 'rec_id': '5d9f9f14523b7e0d8a', 'lot_number': 'db53-4420-887f-0e9bb1364e2e'},
]
Upvotes: 1