in Microsoft.Azure.Cosmos/src/Json/JsonReader.cs [138:288]
public virtual void WriteCurrentToken(IJsonWriter writer)
{
if (writer == null)
{
throw new ArgumentNullException(nameof(writer));
}
JsonTokenType tokenType = this.CurrentTokenType;
switch (tokenType)
{
case JsonTokenType.NotStarted:
break;
case JsonTokenType.BeginArray:
writer.WriteArrayStart();
break;
case JsonTokenType.EndArray:
writer.WriteArrayEnd();
break;
case JsonTokenType.BeginObject:
writer.WriteObjectStart();
break;
case JsonTokenType.EndObject:
writer.WriteObjectEnd();
break;
case JsonTokenType.FieldName:
case JsonTokenType.String:
{
bool isFieldName = tokenType == JsonTokenType.FieldName;
if (this.TryGetBufferedStringValue(out Utf8Memory bufferedStringValue))
{
if (isFieldName)
{
writer.WriteFieldName(bufferedStringValue.Span);
}
else
{
writer.WriteStringValue(bufferedStringValue.Span);
}
}
else
{
string value = this.GetStringValue();
if (isFieldName)
{
writer.WriteFieldName(value);
}
else
{
writer.WriteStringValue(value);
}
}
}
break;
case JsonTokenType.Number:
if (this.TryGetUInt64NumberValue(out ulong uint64Value))
{
writer.WriteNumberValue(uint64Value);
}
else
{
Number64 value = this.GetNumberValue();
writer.WriteNumberValue(value);
}
break;
case JsonTokenType.True:
writer.WriteBoolValue(true);
break;
case JsonTokenType.False:
writer.WriteBoolValue(false);
break;
case JsonTokenType.Null:
writer.WriteNullValue();
break;
case JsonTokenType.Int8:
{
sbyte value = this.GetInt8Value();
writer.WriteInt8Value(value);
}
break;
case JsonTokenType.Int16:
{
short value = this.GetInt16Value();
writer.WriteInt16Value(value);
}
break;
case JsonTokenType.Int32:
{
int value = this.GetInt32Value();
writer.WriteInt32Value(value);
}
break;
case JsonTokenType.Int64:
{
long value = this.GetInt64Value();
writer.WriteInt64Value(value);
}
break;
case JsonTokenType.UInt32:
{
uint value = this.GetUInt32Value();
writer.WriteUInt32Value(value);
}
break;
case JsonTokenType.Float32:
{
float value = this.GetFloat32Value();
writer.WriteFloat32Value(value);
}
break;
case JsonTokenType.Float64:
{
double value = this.GetFloat64Value();
writer.WriteFloat64Value(value);
}
break;
case JsonTokenType.Guid:
{
Guid value = this.GetGuidValue();
writer.WriteGuidValue(value);
}
break;
case JsonTokenType.Binary:
{
ReadOnlyMemory<byte> value = this.GetBinaryValue();
writer.WriteBinaryValue(value.Span);
}
break;
default:
throw new InvalidOperationException($"Unknown enum type: {tokenType}.");
}
}