Blog/Components/_Shared/JsonRender.razor 1.2 K · 51 lines · raw · history

1 @using System.Text.Json
2 @using Blog.Components.Pages
3 @code {
4
5 [Parameter]
6 public JsonElement? Element { get; set; }
7 }
8 @if (Element is { } element)
9 {
10 @switch (element.ValueKind)
11 {
12 case JsonValueKind.Object:
13 {
14 <ul>
15 @foreach (var property in element.EnumerateObject())
16 {
17 <li>
18 <span class="name">@property.Name</span>
19 <JsonRender Element="property.Value"/>
20 </li>
21 }
22 </ul>
23 break;
24 }
25 case JsonValueKind.Array:
26 {
27 <ol>
28 @foreach (var item in element.EnumerateArray())
29 {
30 <li>
31 <JsonRender Element="item"></JsonRender>
32 </li>
33 }
34 </ol>
35 break;
36 }
37 case JsonValueKind.String:
38 {
39 string value = element.GetString() ?? string.Empty;
40 @if (BRP.LooksLikeBSN(value))
41 {
42 <NavLink href=@BRP.Url(value)>@value</NavLink>
43 }
44 else
45 {
46 <span>@value</span>
47 }
48 break;
49 }
50 }
51 }