JSONペイロードを、System.Text.Jsonの[JsonPropertyName]やNewtonsoft.Jsonの属性を付与した、厳密に型付けされたC#のレコード、クラス、構造体へ変換します。
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace GeneratedModels
{
public record OrderPayload
{
[JsonPropertyName("orderId")]
public string? OrderId { get; init; }
[JsonPropertyName("customer")]
public Customer? Customer { get; init; }
[JsonPropertyName("items")]
public List<Item?>? Items { get; init; }
[JsonPropertyName("billingAddress")]
public BillingAddress? BillingAddress { get; init; }
[JsonPropertyName("totalAmount")]
public double TotalAmount { get; init; }
[JsonPropertyName("currency")]
public string? Currency { get; init; }
[JsonPropertyName("isDelivered")]
public bool IsDelivered { get; init; }
[JsonPropertyName("deliveryNotes")]
public object? DeliveryNotes { get; init; }
}
public record BillingAddress
{
[JsonPropertyName("street")]
public string? Street { get; init; }
[JsonPropertyName("city")]
public string? City { get; init; }
[JsonPropertyName("stateOrProvince")]
public string? StateOrProvince { get; init; }
[JsonPropertyName("postalCode")]
public string? PostalCode { get; init; }
[JsonPropertyName("country")]
public string? Country { get; init; }
}
public record Item
{
[JsonPropertyName("sku")]
public string? Sku { get; init; }
[JsonPropertyName("name")]
public string? Name { get; init; }
[JsonPropertyName("quantity")]
public int Quantity { get; init; }
[JsonPropertyName("unitPrice")]
public double UnitPrice { get; init; }
[JsonPropertyName("discounts")]
public List<int>? Discounts { get; init; }
[JsonPropertyName("inStock")]
public bool InStock { get; init; }
}
public record Customer
{
[JsonPropertyName("id")]
public int Id { get; init; }
[JsonPropertyName("fullName")]
public string? FullName { get; init; }
[JsonPropertyName("email")]
public string? Email { get; init; }
[JsonPropertyName("isPremiumMember")]
public bool IsPremiumMember { get; init; }
[JsonPropertyName("registeredAt")]
public DateTimeOffset RegisteredAt { get; init; }
}
}