Create Raku classes to represent JSON data by some dodgy inference.
Use the script to do it simply:
# Create the module in the directory "foo"
raku-json-infer --uri=http://api.mixcloud.com/spartacus/party-time/ --out-dir=foo --class-name=Mixcloud::Show
Or do it in your own code:
use JSON::Infer;
my $obj = JSON::Infer.new();
my $ret = $obj.infer(uri => 'http://api.mixcloud.com/spartacus/party-time/', class-name => 'Mixcloud::Show');
say $ret.make-class; # Print the class definition
JSON is nearly ubiquitous on the internet, developers love it for making APIs. However the webservices that use it for transfer of data rarely have a machine readable specification that can be turned into code so developers who want to consume these services usually have to make the client definition themselves.
This module aims to provide a way to generate Raku classes that can represent the data from a JSON source. The structure and the types of the data is inferred from a single data item so the accuracy may depend on the consistency of the data.
Assuming you have a working Rakudo installation you should be able to install this with zef :
# From the source directory
zef install .
# Remote installation
zef install JSON::Infer
Other install mechanisms may be become available in the future.
Suggestions/patches are welcomed via github at https://github.com/jonathanstowe/JSON-Infer/issues
This is free software.
Please see the LICENCE file in the distribution for details.
© Jonathan Stowe 2015, 2016, 2017, 2019, 2020, 2021