SingleOrArrayJsonConverter 1.0.1.1
dotnet add package SingleOrArrayJsonConverter --version 1.0.1.1
NuGet\Install-Package SingleOrArrayJsonConverter -Version 1.0.1.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SingleOrArrayJsonConverter" Version="1.0.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SingleOrArrayJsonConverter --version 1.0.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SingleOrArrayJsonConverter, 1.0.1.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SingleOrArrayJsonConverter as a Cake Addin
#addin nuget:?package=SingleOrArrayJsonConverter&version=1.0.1.1
// Install SingleOrArrayJsonConverter as a Cake Tool
#tool nuget:?package=SingleOrArrayJsonConverter&version=1.0.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
SingleOrArrayJsonConverter
A JsonConverter that deserializes both a single JSON object and a JSON array as a C# array.
Usage
- With the default JsonConverter
public sealed class Example
{
[JsonConverter(typeof(SingleOrArrayJsonConverter))]
public string[]? Array { get; set; }
}
const string jsonSingle = """{"Array": "single"}""";
var deserializedSingle = JsonSerializer.Deserialize<Example>(jsonSingle);
Console.WriteLine($"{deserializedSingle.Array.Length}: {deserializedSingle.Array[0]}");
// Output: "1: single"
const string jsonArray = """{"Array": ["first", "second"]}""";
var deserializedArray = JsonSerializer.Deserialize<Example>(jsonArray);
Console.WriteLine($"{deserializedArray.Array.Length}: {deserializedArray.Array[0]}, {deserializedArray.Array[1]}");
// Output: "2: first, second"
- With a custom JsonConverter
public sealed class Person
{
public string FirstName { get; }
public string LastName { get; }
public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}
// Converts a Person object into a "${FirstName} ${LastName}" string
public sealed class PersonJsonConverter : JsonConverter<string>
{
public override string? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var personConverter = (JsonConverter<Person>)options.GetConverter(typeof(Person));
Person? person = personConverter.Read(ref reader, typeof(Person), options);
return person != null ? $"{person.FirstName} {person.LastName}" : null;
}
public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options)
{
var personConverter = (JsonConverter<Person>)options.GetConverter(typeof(Person));
var split = value.Split(' ');
var firstName = split[0];
var lastName = split[1];
var person = new Person(firstName, lastName);
personConverter.Write(writer, person, options);
}
}
public sealed class Example
{
[JsonConverter(typeof(SingleOrArrayJsonConverter<PersonJsonConverter>))]
public string[]? Array { get; set; }
}
const string jsonSingle = """{"Array": {"FirstName": "John", "LastName": "Smith"}}""";
var deserializedSingle = JsonSerializer.Deserialize<Example>(json);
Console.WriteLine($"{deserializedSingle.Array.Length}: {deserializedSingle.Array[0]}");
// Output: "1: John Smith"
const string jsonArray = """{"Array": [{"FirstName": "John", "LastName": "Smith"}, {"FirstName": "John", "LastName": "Doe"}]}""";
var deserializedArray = JsonSerializer.Deserialize<Example>(json);
Console.WriteLine($"{deserializedArray.Array.Length}: {deserializedArray.Array[0]}, {deserializedArray.Array[1]}");
// Output: "2: John Smith, John Doe"
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- System.Text.Json (>= 8.0.0)
-
.NETStandard 2.1
- System.Text.Json (>= 8.0.0)
-
net6.0
- System.Text.Json (>= 8.0.0)
-
net7.0
- System.Text.Json (>= 8.0.0)
-
net8.0
- System.Text.Json (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.