I want to write a python script that loops through several JSON files and checks whether an attribute(KEY:VALUE) as shown below
"grp_farmerreg/farmerdetails/farmermobile": "0756625759",
exists and if not check for hh_id as shown belown
"grp_farmerdts/hh_id": "0753693707",
after confirming availability of hh_id and absence of farmemobile i would like to add
"grp_farmerreg/farmerdetails/farmermobile":(number from hh_id)
Here is an example of my JSON file without my farmermobile
{
"_notes": [],
"_bamboo_dataset_id": "",
"_tags": [],
"regdate": "2018-10-17",
"gpsloc": "-9.109567398208265 32.947977763771334 1594.4399713018483 8.0",
"_xform_id_string": "ADGG-TZA-REG02-20181008",
"meta/instanceID": "uuid:4d5372ed-34f0-4ac3-b151-f4f57b746ad4",
"_duration": "",
"grp_calfreg/rpt_b_calvedets": [
{
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/calfsex": "2",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calfname": "Nill",
"grp_calfreg/rpt_b_calvedets/calc_calfsireid": "TNZ000404011991",
"grp_calfreg/rpt_b_calvedets/calfSire_Owner": "3",
"grp_calfreg/rpt_b_calvedets/calfsirebrthyrknown": "0",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/easecalv": "2",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calftagimage": "1539766349136.jpg",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_secBreed": "2",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calvmeasures/calfhgirth": "100.0",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_ShortName": "Nill",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calftagprefix": "00040401",
"grp_calfreg/rpt_b_calvedets/calc_calfid": "TNZ000404014693",
"grp_calfreg/rpt_b_calvedets/grp_calfid/Confirm_CalfID": "OK",
"grp_calfreg/rpt_b_calvedets/calfSire_OwnerFarmer": "Nill",
"grp_calfreg/rpt_b_calvedets/calfSire_TagID": "000404011991",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calvmeasures/calfweight": "80.0",
"grp_calfreg/rpt_b_calvedets/grp_calfid/Calf_ID": "TNZ000404014693",
"grp_calfreg/rpt_b_calvedets/feedmthd/feedmth": "-66",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calvmeasures/calfbodyscore": "4.0",
"grp_calfreg/rpt_b_calvedets/calfsirentregstrd": "1",
"grp_calfreg/rpt_b_calvedets/calfsirebrthdateknown": "0",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_mainComp": "5",
"grp_calfreg/rpt_b_calvedets/grp_calfsireid/Confirm_CalfsireID": "OK",
"grp_calfreg/rpt_b_calvedets/grp_calfsireid/Calfsire_ID": "TNZ000404011991",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/fmlcalfuse/intuse": "1",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/calfsiretype": "1",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/calvtype": "1",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/birthtyp": "1",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/calvdatealv": "2018-05-09",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/damid": "TZN000404014225",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calftagsec": "4693",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_Country": "Unknown",
"grp_calfreg/rpt_b_calvedets/damidyesno": "1",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calfbodyimage": "1539766363236.jpg",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_mainBreed": "2",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_HerdBkRegNo": "Nill",
"grp_calfreg/rpt_b_calvedets/feedmthd/feedmthoth": "Supliment",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calfdef/calfdeformities": "1",
"grp_calfreg/rpt_b_calvedets/calfsireregisterd": "0",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calfcolor": "Black and white",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calfdef/calfwightknown": "1",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_RegisteredName": "Nill"
}
],
"grp_farmerdts/region": "1007",
"_geolocation": [
-9.109567398208265,
32.947977763771334
],
"datacollid": "0758990688",
"_status": "submitted_via_web",
"farmerregistrd": "1",
"deviceid": "353422071089618",
"start_time": "2018-10-17T11:45:49.406+03",
"_uuid": "4d5372ed-34f0-4ac3-b151-f4f57b746ad4",
"grp_farmerdts/village": "4864",
"enumtype": "2",
"_submitted_by": null,
"formhub/uuid": "678f27aca56149a391069c33019a34fc",
"grp_farmerdts/hh_id": "0753693707",
"_id": 626391,
"regactivity": "5",
"_submission_time": "2018-10-22T03:18:24",
"_version": "20181008",
"_attachments": [
{
"mimetype": "image/jpeg",
"download_url": "http://localhost:8000/media/adggtnz/attachments/1539766349136.jpg",
"filename": "adggtnz/attachments/1539766349136.jpg",
"instance": 626391,
"id": 102154,
"xform": 3443
},
{
"mimetype": "image/jpeg",
"download_url": "http://localhost:8000/media/adggtnz/attachments/1539766363236.jpg",
"filename": "adggtnz/attachments/1539766363236.jpg",
"instance": 626391,
"id": 102153,
"xform": 3443
}
],
"end_time": "2018-10-17T11:53:41.354+03",
"grp_farmerdts/country": "2",
"_userform_id": "adggtnz_ADGG-TZA-REG02-20181008",
"grp_farmerdts/ward": "1807",
"grp_farmerdts/district": "1037"
}
i would like to put my output on a different folder to show the original and the updated JSON file
expected output:
{
"_notes": [],
"_bamboo_dataset_id": "",
"_tags": [],
"regdate": "2018-10-17",
"gpsloc": "-9.109567398208265 32.947977763771334 1594.4399713018483 8.0",
"_xform_id_string": "ADGG-TZA-REG02-20181008",
"meta/instanceID": "uuid:4d5372ed-34f0-4ac3-b151-f4f57b746ad4",
"_duration": "",
"grp_calfreg/rpt_b_calvedets": [
{
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/calfsex": "2",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calfname": "Nill",
"grp_calfreg/rpt_b_calvedets/calc_calfsireid": "TNZ000404011991",
"grp_calfreg/rpt_b_calvedets/calfSire_Owner": "3",
"grp_calfreg/rpt_b_calvedets/calfsirebrthyrknown": "0",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/easecalv": "2",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calftagimage": "1539766349136.jpg",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_secBreed": "2",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calvmeasures/calfhgirth": "100.0",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_ShortName": "Nill",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calftagprefix": "00040401",
"grp_calfreg/rpt_b_calvedets/calc_calfid": "TNZ000404014693",
"grp_calfreg/rpt_b_calvedets/grp_calfid/Confirm_CalfID": "OK",
"grp_calfreg/rpt_b_calvedets/calfSire_OwnerFarmer": "Nill",
"grp_calfreg/rpt_b_calvedets/calfSire_TagID": "000404011991",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calvmeasures/calfweight": "80.0",
"grp_calfreg/rpt_b_calvedets/grp_calfid/Calf_ID": "TNZ000404014693",
"grp_calfreg/rpt_b_calvedets/feedmthd/feedmth": "-66",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calvmeasures/calfbodyscore": "4.0",
"grp_calfreg/rpt_b_calvedets/calfsirentregstrd": "1",
"grp_calfreg/rpt_b_calvedets/calfsirebrthdateknown": "0",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_mainComp": "5",
"grp_calfreg/rpt_b_calvedets/grp_calfsireid/Confirm_CalfsireID": "OK",
"grp_calfreg/rpt_b_calvedets/grp_calfsireid/Calfsire_ID": "TNZ000404011991",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/fmlcalfuse/intuse": "1",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/calfsiretype": "1",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/calvtype": "1",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/birthtyp": "1",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/calvdatealv": "2018-05-09",
"grp_calfreg/rpt_b_calvedets/rpt_b_calvedets_layout/damid": "TZN000404014225",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calftagsec": "4693",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_Country": "Unknown",
"grp_calfreg/rpt_b_calvedets/damidyesno": "1",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calfbodyimage": "1539766363236.jpg",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_mainBreed": "2",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_HerdBkRegNo": "Nill",
"grp_calfreg/rpt_b_calvedets/feedmthd/feedmthoth": "Supliment",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calfdef/calfdeformities": "1",
"grp_calfreg/rpt_b_calvedets/calfsireregisterd": "0",
"grp_calfreg/rpt_b_calvedets/calv_alive_geninfo/calfcolor": "Black and white",
"grp_calfreg/rpt_b_calvedets/calv_alive_layout/calfdef/calfwightknown": "1",
"grp_calfreg/rpt_b_calvedets/calfsiredetails/calfSire_RegisteredName": "Nill"
}
],
"grp_farmerdts/region": "1007",
"_geolocation": [
-9.109567398208265,
32.947977763771334
],
"datacollid": "0758990688",
"_status": "submitted_via_web",
"farmerregistrd": "1",
"deviceid": "353422071089618",
"start_time": "2018-10-17T11:45:49.406+03",
"_uuid": "4d5372ed-34f0-4ac3-b151-f4f57b746ad4",
"grp_farmerdts/village": "4864",
"enumtype": "2",
"_submitted_by": null,
"formhub/uuid": "678f27aca56149a391069c33019a34fc",
"grp_farmerdts/hh_id": "0753693707",
"grp_farmerreg/farmerdetails/farmermobile": "0753693707",
"_id": 626391,
"regactivity": "5",
"_submission_time": "2018-10-22T03:18:24",
"_version": "20181008",
"_attachments": [
{
"mimetype": "image/jpeg",
"download_url": "http://localhost:8000/media/adggtnz/attachments/1539766349136.jpg",
"filename": "adggtnz/attachments/1539766349136.jpg",
"instance": 626391,
"id": 102154,
"xform": 3443
},
{
"mimetype": "image/jpeg",
"download_url": "http://localhost:8000/media/adggtnz/attachments/1539766363236.jpg",
"filename": "adggtnz/attachments/1539766363236.jpg",
"instance": 626391,
"id": 102153,
"xform": 3443
}
],
"end_time": "2018-10-17T11:53:41.354+03",
"grp_farmerdts/country": "2",
"_userform_id": "adggtnz_ADGG-TZA-REG02-20181008",
"grp_farmerdts/ward": "1807",
"grp_farmerdts/district": "1037"
}
here is what i have tried:
import json
import os
json_dir="/new/20180116/"
json_dir_processed="/new/20180116updated/"
for json_file in os.listdir(json_dir):
if json_file.endswith(".json"):
processed_json = "%s%s" % (json_dir_processed, json_file)
json_file = json_dir + json_file
print "Processing %s -> %s" % (json_file, processed_json)
with open(json_file, 'r') as f:
json_data = json.load(f)
json_data['"grp_farmerreg/farmerdetails/farmermobile": "0753693707"'] = json_data['"grp_farmerdts/hh_id": "0753693707" ']
with open(processed_json, 'w') as f:
f.write(json.dumps(json_data, indent=4))
else:
print "%s not a JSON file" % json_file
my script results to the following error
Traceback (most recent call last):
File "new.py", line 15, in <module>
json_data['"grp_farmerreg/farmerdetails/farmermobile": "0753693707"'] = json_data['"grp_farmerdts/hh_id": "0753693707" ']
KeyError: '"grp_farmerdts/hh_id": "0753693707" '