dyaml/examples/tojson/source/app.d

55 lines
1 KiB
D
Raw Normal View History

module dyaml.tojson;
import std.datetime;
import std.json;
import std.stdio;
import dyaml;
void main()
{
auto doc = Loader.fromFile(stdin).load();
auto json = doc.toJSON;
writeln(json.toPrettyString);
}
JSONValue toJSON(Node node)
{
JSONValue output;
if (node.isSequence)
{
output = JSONValue(string[].init);
foreach (Node seqNode; node)
{
output.array ~= seqNode.toJSON();
}
}
else if (node.isMapping)
{
output = JSONValue(string[string].init);
foreach (Node keyNode, Node valueNode; node)
{
output[keyNode.as!string] = valueNode.toJSON();
}
}
else if (node.isString)
{
output = node.as!string;
}
else if (node.isInt)
{
output = node.as!long;
}
else if (node.isFloat)
{
output = node.as!real;
}
else if (node.isBool)
{
output = node.as!bool;
}
else if (node.isTime)
{
output = node.as!SysTime.toISOExtString();
}
return output;
}