Skip to content

Commit 6bf9947

Browse files
committed
Added generated JSON Serialization
1 parent b1b02e4 commit 6bf9947

File tree

8 files changed

+36
-12
lines changed

8 files changed

+36
-12
lines changed

src/BlazingPizza.Client/OrdersClient.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Net.Http.Json;
2+
using System.Text.Json;
23

34
namespace BlazingPizza.Client;
45

@@ -12,16 +13,16 @@ public OrdersClient(HttpClient httpClient)
1213
}
1314

1415
public async Task<IEnumerable<OrderWithStatus>> GetOrders() =>
15-
await httpClient.GetFromJsonAsync<IEnumerable<OrderWithStatus>>("orders");
16+
await httpClient.GetFromJsonAsync("orders", OrderContext.Default.ListOrderWithStatus);
1617

1718

1819
public async Task<OrderWithStatus> GetOrder(int orderId) =>
19-
await httpClient.GetFromJsonAsync<OrderWithStatus>($"orders/{orderId}");
20+
await httpClient.GetFromJsonAsync($"orders/{orderId}", OrderContext.Default.OrderWithStatus);
2021

2122

2223
public async Task<int> PlaceOrder(Order order)
2324
{
24-
var response = await httpClient.PostAsJsonAsync("orders", order);
25+
var response = await httpClient.PostAsJsonAsync("orders", order, OrderContext.Default.Order);
2526
response.EnsureSuccessStatusCode();
2627
var orderId = await response.Content.ReadFromJsonAsync<int>();
2728
return orderId;

src/BlazingPizza.Client/Pages/Index.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161

6262
protected override async Task OnInitializedAsync()
6363
{
64-
specials = await HttpClient.GetFromJsonAsync<List<PizzaSpecial>>("specials");
64+
specials = await HttpClient.GetFromJsonAsync("specials", BlazingPizza.OrderContext.Default.ListPizzaSpecial);
6565
}
6666

6767
async Task RemovePizza(Pizza configuredPizza)

src/BlazingPizza.Client/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
22
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
33
using Microsoft.Extensions.DependencyInjection;
4-
using BlazingPizza.client
4+
using BlazingPizza.Client;
55

66
var builder = WebAssemblyHostBuilder.CreateDefault(args);
77
builder.RootComponents.Add<App>("#app");

src/BlazingPizza.Client/Shared/ConfigurePizzaDialog.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565

6666
protected async override Task OnInitializedAsync()
6767
{
68-
toppings = await HttpClient.GetFromJsonAsync<List<Topping>>("toppings");
68+
toppings = await HttpClient.GetFromJsonAsync("toppings", BlazingPizza.OrderContext.Default.ListTopping);
6969
}
7070

7171
void ToppingSelected(ChangeEventArgs e)

src/BlazingPizza.Server/Program.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44

55
var builder = WebApplication.CreateBuilder(args);
66

7-
builder.Services.AddControllersWithViews();
7+
builder.Services.AddControllersWithViews()
8+
.AddJsonOptions(options => {
9+
options.JsonSerializerOptions.AddContext<BlazingPizza.OrderContext>();
10+
});
811
builder.Services.AddRazorPages();
912

1013
builder.Services.AddDbContext<PizzaStoreContext>(options =>

src/BlazingPizza.Shared/Order.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace BlazingPizza;
1+
using System.Text.Json.Serialization;
2+
3+
namespace BlazingPizza;
24

35
public class Order
46
{
@@ -17,4 +19,14 @@ public class Order
1719
public decimal GetTotalPrice() => Pizzas.Sum(p => p.GetTotalPrice());
1820

1921
public string GetFormattedTotalPrice() => GetTotalPrice().ToString("0.00");
20-
}
22+
}
23+
24+
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Default, PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
25+
[JsonSerializable(typeof(Order))]
26+
[JsonSerializable(typeof(OrderWithStatus))]
27+
[JsonSerializable(typeof(List<OrderWithStatus>))]
28+
[JsonSerializable(typeof(Pizza))]
29+
[JsonSerializable(typeof(List<PizzaSpecial>))]
30+
[JsonSerializable(typeof(List<Topping>))]
31+
[JsonSerializable(typeof(Topping))]
32+
public partial class OrderContext : JsonSerializerContext {}

src/BlazingPizza.Shared/OrderWithStatus.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using BlazingPizza.ComponentsLibrary.Map;
1+
using System.Text.Json.Serialization;
2+
using BlazingPizza.ComponentsLibrary.Map;
3+
24

35
namespace BlazingPizza;
46

src/BlazingPizza.Shared/Pizza.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
namespace BlazingPizza;
1+
using System.Text.Json.Serialization;
2+
3+
namespace BlazingPizza;
24

35
/// <summary>
46
/// /// Represents a customized pizza as part of an order
@@ -35,4 +37,8 @@ public string GetFormattedTotalPrice()
3537
{
3638
return GetTotalPrice().ToString("0.00");
3739
}
38-
}
40+
}
41+
42+
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Serialization)]
43+
[JsonSerializable(typeof(Pizza))]
44+
public partial class PizzaContext : JsonSerializerContext {}

0 commit comments

Comments
 (0)