#!/home/ben/software/install/bin/perl
use warnings;
use strict;
use utf8;
use JSON::Parse 'parse_json';
use HTML::Make;
binmode STDOUT, ":encoding(utf8)";
my $json =<<EOF;
{
"name":"win7x64base",
"versions":"win7x64basev1a95bd5",
"fileSize":"7217",
"downloadUrl":"",
"fileName":"vzdump-qemu-288-2023_01_01-21_18_33.vma.zst",
"imgSize":"61440",
"guestos":"Microsoft Windows 7",
"createtime":"2023-01-01 09:18:33",
"agentver":"2.4.0",
"md5":"4c7e5a7cc3228e509516e2396453a9eb",
"description":"win7 64位系统，未安装软件"
}
EOF
my $p = parse_json ($json);
my $html = json_to_html ($p);
print $html->text ();
exit;

sub json_to_html
{
    my ($input) = @_;
    my $element;
    if (ref $input eq 'ARRAY') {
	$element = HTML::Make->new ('ol');
	for my $k (@$input) {
	    my $li = $element->push ('li');
	    $li->push (json_to_html ($k));
	}
    }
    elsif (ref $input eq 'HASH') {
	$element = HTML::Make->new ('table');
	for my $k (sort keys %$input) {
	    my $tr = $element->push ('tr');
	    $tr->push ('th', text => $k);
	    my $td = $tr->push ('td');
	    $td->push (json_to_html ($input->{$k}));
	}
    }
    else {
	$element = HTML::Make->new ('span', text => $input);
    }
    return $element;
}
