Forge
csharpc88715b7
1using System.Text.Json.Nodes;
2using Tomlyn.Model;
3
4namespace AIGuiders.DotnetTools.TomlCheck;
5
6internal static class TomlToJsonConverter
7{
8 public static JsonNode ToJsonNode(TomlTable table) => ConvertTable(table);
9
10 private static JsonObject ConvertTable(TomlTable table)
11 {
12 var obj = new JsonObject();
13 foreach (var (key, value) in table)
14 obj[key] = ConvertValue(value);
15 return obj;
16 }
17
18 private static JsonArray ConvertTableArray(TomlTableArray array)
19 {
20 var arr = new JsonArray();
21 foreach (var table in array)
22 arr.Add(ConvertTable(table));
23 return arr;
24 }
25
26 private static JsonArray ConvertArray(TomlArray array)
27 {
28 var arr = new JsonArray();
29 foreach (var item in array)
30 arr.Add(ConvertValue(item));
31 return arr;
32 }
33
34 private static JsonNode? ConvertValue(object? value) =>
35 value switch
36 {
37 null => null,
38 TomlTable t => ConvertTable(t),
39 TomlTableArray ta => ConvertTableArray(ta),
40 TomlArray a => ConvertArray(a),
41 string s => JsonValue.Create(s),
42 bool b => JsonValue.Create(b),
43 long l => JsonValue.Create(l),
44 int i => JsonValue.Create(i),
45 double d => JsonValue.Create(d),
46 float f => JsonValue.Create(f),
47 DateTimeOffset dto => JsonValue.Create(dto.ToString("O")),
48 DateTime dt => JsonValue.Create(dt.ToString("O")),
49 _ => JsonValue.Create(value.ToString()),
50 };
51}
52
View only · write via MCP/CIDE