Class SystemTextJsonSerializer
A JSON serializer based on System.Text.Json.
Implements
Inherited Members
Namespace: Couchbase.Core.IO.Serializers
Assembly: Couchbase.NetClient.dll
Syntax
[InterfaceStability(Level.Volatile)]
public abstract class SystemTextJsonSerializer : IExtendedTypeSerializer, IProjectableTypeDeserializer, IStreamingTypeDeserializer, IBufferedTypeSerializer, ITypeSerializer
Remarks
This class is currently experimental and subject to change. It does not support all serialization features
supported by the Default
- Couchbase.Transactions is not currently supported.
-
No support for
dynamic
types. -
Some properties of Query
Meta which useData dynamic
, such as Profile and Signature, are not populated. -
View-style queries are not supported using
JsonSerializerContext
, only reflection-based serialization. -
Any use of Newtonsoft.
Json. should be replaced with JsonLinq. JToken Element orobject
.
Properties
| Edit this page View SourceDeserializationOptions
Provides custom deserialization options. Options not listed in Supported
Declaration
public DeserializationOptions? DeserializationOptions { get; set; }
Property Value
Type | Description |
---|---|
Deserialization |
Options
Json
Declaration
public abstract JsonSerializerOptions Options { get; }
Property Value
Type | Description |
---|---|
Json |
SupportedDeserializationOptions
Informs consumers what deserialization options this IExtended
Declaration
public SupportedDeserializationOptions SupportedDeserializationOptions { get; }
Property Value
Type | Description |
---|---|
Supported |
Methods
| Edit this page View SourceCanSerialize(Type)
Determines if the serializer can serialize and deserialize the specified type.
Declaration
public abstract bool CanSerialize(Type type)
Parameters
Type | Name | Description |
---|---|---|
Type | type | Type of object to serialize or deserialize. |
Returns
Type | Description |
---|---|
bool |
|
Create(bool)
Create a new SystemTextJsonSerializer with default options, optionally enabling increased Newtonsoft.Json compatibility.
Declaration
public static SystemTextJsonSerializer Create(bool increasedNewtonsoftCompatibility = false)
Parameters
Type | Name | Description |
---|---|---|
bool | increasedNewtonsoftCompatibility | Enable increased Newtonsoft.Json compatibility. |
Returns
Type | Description |
---|---|
System |
A new SystemTextJsonSerializer. |
Remarks
The increasedNewtonsoftCompatibility
parameter doesn't make this fully compatible with Newtonsoft.Json.
However, it does enable several features to make it more compatible such as case-insensitive property name deserialization,
ignoring comments and trailing commas, serializing public fields, etc. For details on compatibility, see
https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to
Create(JsonSerializerOptions)
Create a new SystemTextJsonSerializer with supplied Json
Declaration
public static SystemTextJsonSerializer Create(JsonSerializerOptions options)
Parameters
Type | Name | Description |
---|---|---|
Json |
options | Json |
Returns
Type | Description |
---|---|
System |
A new SystemTextJsonSerializer. |
Create(JsonSerializerContext)
Create a new SystemTextJsonSerializer using a supplied Json
Declaration
public static SystemTextJsonSerializer Create(JsonSerializerContext context)
Parameters
Type | Name | Description |
---|---|---|
Json |
context | Json |
Returns
Type | Description |
---|---|
System |
A new SystemTextJsonSerializer. |
Remarks
This overload should be used to supply custom serializers on a per-request basis that are optimized for the particular
type being serialized or deserialized. Any type which isn't registered in the Json
CreateJsonStreamReader(Stream)
Create an IJson
Declaration
public abstract IJsonStreamReader CreateJsonStreamReader(Stream stream)
Parameters
Returns
Type | Description |
---|---|
IJson |
The new IJson |
CreateProjectionBuilder(ILogger)
Create a new IProjection
Declaration
public abstract IProjectionBuilder CreateProjectionBuilder(ILogger logger)
Parameters
Type | Name | Description |
---|---|---|
ILogger | logger | Logger for logging warnings or errors. |
Returns
Type | Description |
---|---|
IProjection |
A new IProjection |
DeserializeAsync<T>(Stream, CancellationToken)
Deserializes the specified stream into the Type T specified as a generic parameter.
Declaration
public abstract ValueTask<T?> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default)
Parameters
Type | Name | Description |
---|---|---|
Stream | stream | The stream. |
Cancellation |
cancellationToken | Cancellation token. |
Returns
Type Parameters
Name | Description |
---|---|
T | The Type specified as the type of the value. |
Deserialize<T>(ReadOnlySequence<byte>)
Deserializes the specified buffer into the type specified by T
.
Declaration
public abstract T? Deserialize<T>(ReadOnlySequence<byte> buffer)
Parameters
Type | Name | Description |
---|---|---|
Read |
buffer | The buffer to deserialize from. |
Returns
Type | Description |
---|---|
T | The deserialized value. |
Type Parameters
Name | Description |
---|---|
T | The type of the value. |
Deserialize<T>(Stream)
Deserializes the specified stream into the Type T specified as a generic parameter.
Declaration
public abstract T? Deserialize<T>(Stream stream)
Parameters
Type | Name | Description |
---|---|---|
Stream | stream | The stream. |
Returns
Type | Description |
---|---|
T | The Type instance representing the value of the key. |
Type Parameters
Name | Description |
---|---|
T | The Type specified as the type of the value. |
Deserialize<T>(ReadOnlyMemory<byte>)
Deserializes the specified buffer into the Type T specified as a generic parameter.
Declaration
public abstract T? Deserialize<T>(ReadOnlyMemory<byte> buffer)
Parameters
Type | Name | Description |
---|---|---|
Read |
buffer | The buffer to deserialize from. |
Returns
Type | Description |
---|---|
T | The Type instance representing the value of the key. |
Type Parameters
Name | Description |
---|---|
T | The Type specified as the type of the value. |
GetMemberName(MemberInfo)
Get the name which will be used for a given member during serialization/deserialization.
Declaration
public string? GetMemberName(MemberInfo member)
Parameters
Type | Name | Description |
---|---|---|
Member |
member | Returns the name of this member. |
Returns
Type | Description |
---|---|
string | The name which will be used for a given member during serialization/deserialization, or null if if will not be serialized. |
Serialize(Stream, object?)
Serializes the specified object onto a stream.
Declaration
public abstract void Serialize(Stream stream, object? obj)
Parameters
Type | Name | Description |
---|---|---|
Stream | stream | The stream to receive the serialized object. |
object | obj | The object to serialize. |
Remarks
This overload does not make use of Json
Serialize(Utf8JsonWriter, object?)
Serializes the specified object onto a Utf8Json
Declaration
public abstract void Serialize(Utf8JsonWriter stream, object? obj)
Parameters
Type | Name | Description |
---|---|---|
Utf8Json |
stream | The writer to receive the serialized object. |
object | obj | The object to serialize. |
SerializeAsync(Stream, object?, CancellationToken)
Serializes the specified object onto a stream.
Declaration
public abstract ValueTask SerializeAsync(Stream stream, object? obj, CancellationToken cancellationToken = default)
Parameters
Type | Name | Description |
---|---|---|
Stream | stream | The stream to receive the serialized object. |
object | obj | The object to serialize. |
Cancellation |
cancellationToken | Cancellation token. |
Returns
Type | Description |
---|---|
Value |
Remarks
This overload does not make use of Json
SerializeAsync<T>(Stream, T, CancellationToken)
Serializes the specified object onto a stream.
Declaration
public abstract ValueTask SerializeAsync<T>(Stream stream, T obj, CancellationToken cancellationToken = default)
Parameters
Type | Name | Description |
---|---|---|
Stream | stream | The stream to receive the serialized object. |
T | obj | The object to serialize. |
Cancellation |
cancellationToken | Cancellation token. |
Returns
Type | Description |
---|---|
Value |
Type Parameters
Name | Description |
---|---|
T | Type of object to serialize. |
Serialize<T>(IBufferWriter<byte>, T)
Serializes the specified object onto an IBuffer
Declaration
public abstract void Serialize<T>(IBufferWriter<byte> writer, T obj)
Parameters
Type | Name | Description |
---|---|---|
IBuffer |
writer | The writer to receive the serialized object. |
T | obj | The object to serialize. |
Type Parameters
Name | Description |
---|---|
T | Type of object to serialize. |
Serialize<T>(Stream, T)
Serializes the specified object onto a stream.
Declaration
public abstract void Serialize<T>(Stream stream, T obj)
Parameters
Type | Name | Description |
---|---|---|
Stream | stream | The stream to receive the serialized object. |
T | obj | The object to serialize. |
Type Parameters
Name | Description |
---|---|
T | Type of object to serialize. |
Serialize<T>(Utf8JsonWriter, T)
Serializes the specified object onto a Utf8Json
Declaration
public abstract void Serialize<T>(Utf8JsonWriter stream, T obj)
Parameters
Type | Name | Description |
---|---|---|
Utf8Json |
stream | The writer to receive the serialized object. |
T | obj | The object to serialize. |
Type Parameters
Name | Description |
---|---|
T | Type of object to serialize. |