File: Otlp\Model\Serialization\OtlpJsonSerializerContext.cs
Web Access
Project: src\src\Aspire.Dashboard\Aspire.Dashboard.csproj (Aspire.Dashboard)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Text.Json;
using System.Text.Json.Serialization;
 
namespace Aspire.Dashboard.Otlp.Model.Serialization;
 
/// <summary>
/// Source-generated JSON serializer context for OTLP types.
/// Provides AOT-compatible serialization for all OTLP JSON types.
/// </summary>
[JsonSourceGenerationOptions(
    PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase,
    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
    WriteIndented = false)]
[JsonSerializable(typeof(OtlpAnyValueJson))]
[JsonSerializable(typeof(OtlpArrayValueJson))]
[JsonSerializable(typeof(OtlpKeyValueListJson))]
[JsonSerializable(typeof(OtlpKeyValueJson))]
[JsonSerializable(typeof(OtlpInstrumentationScopeJson))]
[JsonSerializable(typeof(OtlpEntityRefJson))]
[JsonSerializable(typeof(OtlpResourceJson))]
[JsonSerializable(typeof(OtlpTracesDataJson))]
[JsonSerializable(typeof(OtlpResourceSpansJson))]
[JsonSerializable(typeof(OtlpScopeSpansJson))]
[JsonSerializable(typeof(OtlpSpanJson))]
[JsonSerializable(typeof(OtlpSpanEventJson))]
[JsonSerializable(typeof(OtlpSpanLinkJson))]
[JsonSerializable(typeof(OtlpSpanStatusJson))]
[JsonSerializable(typeof(OtlpExportTraceServiceRequestJson))]
[JsonSerializable(typeof(OtlpExportTraceServiceResponseJson))]
[JsonSerializable(typeof(OtlpExportTracePartialSuccessJson))]
[JsonSerializable(typeof(OtlpLogsDataJson))]
[JsonSerializable(typeof(OtlpResourceLogsJson))]
[JsonSerializable(typeof(OtlpScopeLogsJson))]
[JsonSerializable(typeof(OtlpLogRecordJson))]
[JsonSerializable(typeof(OtlpExportLogsServiceRequestJson))]
[JsonSerializable(typeof(OtlpExportLogsServiceResponseJson))]
[JsonSerializable(typeof(OtlpExportLogsPartialSuccessJson))]
[JsonSerializable(typeof(OtlpMetricsDataJson))]
[JsonSerializable(typeof(OtlpResourceMetricsJson))]
[JsonSerializable(typeof(OtlpScopeMetricsJson))]
[JsonSerializable(typeof(OtlpMetricJson))]
[JsonSerializable(typeof(OtlpGaugeJson))]
[JsonSerializable(typeof(OtlpSumJson))]
[JsonSerializable(typeof(OtlpHistogramJson))]
[JsonSerializable(typeof(OtlpExponentialHistogramJson))]
[JsonSerializable(typeof(OtlpSummaryJson))]
[JsonSerializable(typeof(OtlpNumberDataPointJson))]
[JsonSerializable(typeof(OtlpHistogramDataPointJson))]
[JsonSerializable(typeof(OtlpExponentialHistogramDataPointJson))]
[JsonSerializable(typeof(OtlpExponentialHistogramBucketsJson))]
[JsonSerializable(typeof(OtlpSummaryDataPointJson))]
[JsonSerializable(typeof(OtlpValueAtQuantileJson))]
[JsonSerializable(typeof(OtlpExemplarJson))]
[JsonSerializable(typeof(OtlpExportMetricsServiceRequestJson))]
[JsonSerializable(typeof(OtlpExportMetricsServiceResponseJson))]
[JsonSerializable(typeof(OtlpExportMetricsPartialSuccessJson))]
internal sealed partial class OtlpJsonSerializerContext : JsonSerializerContext
{
    /// <summary>
    /// Gets the default serializer options for OTLP JSON serialization.
    /// </summary>
    public static JsonSerializerOptions DefaultOptions { get; } = new JsonSerializerOptions
    {
        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
        WriteIndented = false,
        TypeInfoResolver = Default
    };
 
    /// <summary>
    /// Gets the serializer options for OTLP JSON serialization with indented output.
    /// </summary>
    public static JsonSerializerOptions IndentedOptions { get; } = new JsonSerializerOptions
    {
        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
        DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
        WriteIndented = true,
        TypeInfoResolver = Default
    };
}