}
sub print_api_result {
- my ($format, $data, $result_schema, $props_to_print, $options) = @_;
+ my ($data, $result_schema, $props_to_print, $options) = @_;
return if $options->{quiet};
$options = { %$options }; # copy
}
+ my $format = $options->{'output-format'} // 'text';
+
return if $result_schema->{type} eq 'null';
if ($format eq 'json') {
+ # Note: we always use utf8 encoding for json format
+ print to_json($data, {utf8 => 1, allow_nonref => 1, canonical => 1 }) . "\n";
+ } elsif ($format eq 'json-pretty') {
# Note: we always use utf8 encoding for json format
print to_json($data, {utf8 => 1, allow_nonref => 1, canonical => 1, pretty => 1 });
- } elsif ($format eq 'text' || $format eq 'plain') {
+ } elsif ($format eq 'text') {
my $encoding = $options->{encoding} // 'UTF-8';
my $type = $result_schema->{type};
if ($type eq 'object') {
$props_to_print = [ sort keys %$data ] if !scalar(@$props_to_print);
my $kvstore = [];
foreach my $key (@$props_to_print) {
+ next if !defined($data->{$key});
push @$kvstore, { key => $key, value => data_to_text($data->{$key}, $result_schema->{properties}->{$key}, $options) };
}
my $schema = { type => 'array', items => { type => 'object' }};