from pathlib import Path
import json
def reject(pairs):
 d={}
 for k,v in pairs:
  if k in d:raise ValueError('duplicate member: '+k)
  d[k]=v
 return d
p=Path(__file__).parent;r=[]
for n in ['duplicate-top.json','duplicate-nested.json','unique.json']:
 try:
  json.loads((p/n).read_text(encoding='utf-8'),object_pairs_hook=reject);r.append({'file':n,'status':'accepted'})
 except ValueError as e:r.append({'file':n,'status':'rejected','error':str(e)})
assert [a['status'] for a in r]==['rejected','rejected','accepted'];print(json.dumps(r,indent=2))
