I'm trying to convert JSON data to XML using perl script. But the JSON when converted is not having the expected tags. Below is the input, code I used and output I received
{"status": "Success",
"output":
{"product_artifacts":
[
{"variant_name": "test_var",
"artifacts":
[
{"artifact_created": "10-25-19 15:52:02",
"artifact_download_link": "http://abc:rt/ ",
"artifact_digital_size": 123,
"artifact_number": "123/234",
"artifact_revision": "AB1"}
]
}
]
},
"message":
[]
}
Above Json when passed to the below Perl script, is not creating the XML as expected: Perl Script :
#!/app/perl/5.16.2/LMWP3/bin/perl
use strict;
use warnings;
binmode STDOUT, ":utf8";
use utf8;
use JSON;
use XML::Simple;
# Read input file in json format
my $json = '
{"status": "Success",
"output":
{"product_artifacts":
[
{"variant_name": "test_var",
"artifacts":
[
{"artifact_created": "10-25-19 15:52:02",
"artifact_download_link": "http://abc:rt/ ",
"artifact_digital_size": 123,
"artifact_number": "123/234",
"artifact_revision": "AB1"}
]
}
]
},
"message":
[]
}';
# Convert JSON format to perl structures
my $data = decode_json($json);
# Output as XML
print "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
print XMLout($data);
print "\n";
Actual Output:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<opt status="Success">
<output>
<product_artifacts variant_name="test_var">
<artifacts artifact_created="10-25-19 15:52:02" artifact_digital_size="9293792" artifact_download_link="http://abc:rt " artifact_number="123/234" artifact_revision="AC" />
</product_artifacts>
</output>
</opt>
Expected output:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<status>Success</status>
<output>
<product_artifacts>
<variant_name>test_var</variant_name>
<artifacts>
<artifact_created>10-25-19 15:52:02</artifact_created>
<artifact_download_link>http://asd:rt </artifact_download_link>
<artifact_digital_size>123</artifact_digital_size>
<artifact_number>1234</artifact_number>
<artifact_revision>AC</artifact_revision>
</artifacts>
</product_artifacts>
</output>
<message/>
</root>
Can someone help where I'm going wrong