The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mango::BSON::Dump - Helpers to dump Mango BSON documents as Extended JSON

VERSION

version 0.1

SYNOPSIS

    use Mango::BSON ':bson';
    use Mango::BSON::Dump qw(to_extjson);

    #  '{"v":{"$numberLong":"42"},"created":{"$date":"1970-01-01T00:00:00Z"}}'
    to_extjson(bson_doc(v => bson_int64(42), created => bson_time(0)));

    use Mojo::JSON qw(encode_json);

    #  '{"v":{"$numberLong":"42"},"created":{"$date":"1970-01-01T00:00:00Z"}}'
    encode_json(bson_doc(v => bson_int64(42), created => bson_time(0)));

DESCRIPTION

This module enables dumping Mango BSON documents and objects as Extended JSON (see https://docs.mongodb.com/manual/reference/mongodb-extended-json/), which might be handy for development and debugging.

FUNCTIONS

to_extjson
    $json = to_extjson($bson_doc);
    $json = to_extjson($bson_doc, pretty => 1);

Encodes $bson_doc into Extended JSON.

CAVEATS

This module installs TO_JSON methods to a number of packages (eg. Mango::BSON::Number, Mango::BSON::ObjectID, Regexp). This does not play well with other modules defining or installing the same methods to the same classes. As of Mango 1.29, this clashes with defined TO_JSON for Mango::BSON::Binary, Mango::BSON::Number, and Mango::BSON::Time (which don't conform to Extended JSON).

SEE ALSO

    https://docs.mongodb.com/manual/reference/mongodb-extended-json/

    https://docs.mongodb.com/manual/reference/bson-types/

    http://bsonspec.org/

    https://github.com/mongodb/specifications/tree/master/source/bson-corpus

ACKNOWLEDGMENTS

The development of this library has been partially sponsored by Connectivity, Inc.

AUTHOR

Adriano Ferreira <ferreira@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Adriano Ferreira.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.