| File: JsonConverter\GlobalValueJsonConverter.cs | Web Access |
| Project: src\runtime\src\coreclr\tools\cdac-build-tool\cdac-build-tool.csproj (cdac-build-tool) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Text.Json; using System.Text.Json.Serialization; using Microsoft.DotNet.Diagnostics.DataContract.BuildTool; namespace Microsoft.DotNet.Diagnostics.DataContract.JsonConverter; public class GlobalValueJsonConverter : JsonConverter<DataDescriptorModel.GlobalValue> { public override DataDescriptorModel.GlobalValue Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { throw new JsonException(); } public override void Write(Utf8JsonWriter writer, DataDescriptorModel.GlobalValue value, JsonSerializerOptions options) { switch (value.Kind) { case DataDescriptorModel.GlobalValue.KindEnum.Direct: // no type: just write value as a number. // we always write as a string containing a hex number writer.WriteStringValue($"0x{value.NumericValue:x}"); break; case DataDescriptorModel.GlobalValue.KindEnum.Indirect: // pointer data index. write as a 1-element array containing a decimal number writer.WriteStartArray(); writer.WriteNumberValue(value.NumericValue); writer.WriteEndArray(); break; case DataDescriptorModel.GlobalValue.KindEnum.String: // string data. write as a JSON string value writer.WriteStringValue(value.StringValue); break; default: throw new InvalidOperationException("Unknown GlobalValue type"); } } }