Skip to content

Instantly share code, notes, and snippets.

@teserak
Forked from miku/marc_to_json.snippet.py
Created May 20, 2022 09:31
Show Gist options
  • Save teserak/77a00e5e411812a40b71d0dd3d76cd3c to your computer and use it in GitHub Desktop.
Save teserak/77a00e5e411812a40b71d0dd3d76cd3c to your computer and use it in GitHub Desktop.

Revisions

  1. @miku miku created this gist Dec 29, 2011.
    24 changes: 24 additions & 0 deletions marc_to_json.snippet.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    def marc_to_dict(marcobj):
    control_fields = ('001', '002', '003', '004', '005', '006', '007', '008', '009')
    jsonobj = {}
    jsonobj['leader'] = marcobj.leader
    jsonobj['fields'] = []
    for field in marcobj.fields:
    if field.tag in control_fields:
    jsonobj['fields'].append( { field.tag : re.escape(field.data) } )
    else:
    subdict = {}
    subdict[field.tag] = {}
    it = iter(field.subfields)
    subdict[field.tag]['subfields'] = [ { k : re.escape(v) } for k, v in zip(it, it) ]
    subdict[field.tag]['ind1'] = field.indicator1
    subdict[field.tag]['ind2'] = field.indicator2

    jsonobj['fields'].append(subdict)

    return jsonobj

    def marc_to_json(marcobj):
    """ http://dilettantes.code4lib.org/blog/2010/09/a-proposal-to-serialize-marc-in-json/
    """
    return json.dumps(marc_to_dict(marcobj))