Re: MARC-in-JSON in MARC::Record

[email protected] (Brad Baxter) Thu, 10 Feb 2011 09:06:03 -0500
Newsgroups perl.perl4lib
Message-ID <[email protected]>
On Wed, Feb 9, 2011 at 5:29 PM, Galen Charlton <[email protected]> wrote:
> The MARC::File::JSON module is consistent with other MARC::File::XXX
> modules that handle serializing and deserializing MARC::Record
> objects.
>
> MARC::Utils::MARC2Ini is an interesting concept, but it wouldn't take
> much work to recast it as MARC::File::Ini.  By using MARC::File::Foo
> serializers/deserializers, you could also avoid the need for an
> explicit MARC::Utils::MARC_in_JSON2Ini; instead, you could just do
> this:
>
> my $rec = MARC::File::JSON::decode($json);
> my $ini_string = MARC::File::Ini::encode($rec);
>

In the case of 2Ini, I can very well see it fitting well as MARC::File::Ini,
because the result of MARC2Ini is necessarily a string (because there
is no "native" Ini structure).  In the case of 2MARC_in_JSON (and
2Pairs), my thinking was more along the lines of having the native perl
data structure to work on.  That is, if a project would rather create
MARC records as a perl MARC_in_JSON hash rather than as "born"
MARC::Record objects, then there is a function for converting to
MARC::Record for sharing to the world as necessary.

I have to confess that I don't have a use case for this.  In part, I was
reacting to Paul's note about MARC::Loader, where they apparently
are creating MARC data as a hash and then converting to MARC::Record.

I'll pursue the Ini idea.  I had already thought about a record separator.
As it stands, the control fields are in a "null section" (represented
explicitly by "[_]" following Config::Tiny's example).  So this could be
the record separator when reading/writing files.

I had also thought about how to separate JSON records in a single file.
Perhaps this has been solved already, but I haven't seen a reference
to it.  If it were YAML, you could simply put "\n---\n" between the JSON
objects, and it would be simple to scan for that.

Anyway, I'll think through this some more and see what might fall out
as useful.

Thanks,

Brad