public virtual void WriteNode()

in Microsoft.Azure.Cosmos/src/Json/JsonNavigator.cs [124:274]


        public virtual void WriteNode(IJsonNavigatorNode node, IJsonWriter jsonWriter)
        {
            JsonNodeType nodeType = this.GetNodeType(node);
            switch (nodeType)
            {
                case JsonNodeType.Null:
                    jsonWriter.WriteNullValue();
                    return;

                case JsonNodeType.False:
                    jsonWriter.WriteBoolValue(false);
                    return;

                case JsonNodeType.True:
                    jsonWriter.WriteBoolValue(true);
                    return;

                case JsonNodeType.Number:
                    if (this.TryGetUInt64Value(node, out ulong uint64Value))
                    {
                        jsonWriter.WriteNumberValue(uint64Value);
                    }
                    else
                    {
                        Number64 value = this.GetNumberValue(node);
                        jsonWriter.WriteNumberValue(value);
                    }
                    break;

                case JsonNodeType.String:
                case JsonNodeType.FieldName:
                    bool fieldName = nodeType == JsonNodeType.FieldName;
                    if (this.TryGetBufferedStringValue(node, out Utf8Memory bufferedStringValue))
                    {
                        if (fieldName)
                        {
                            jsonWriter.WriteFieldName(bufferedStringValue.Span);
                        }
                        else
                        {
                            jsonWriter.WriteStringValue(bufferedStringValue.Span);
                        }
                    }
                    else
                    {
                        string value = this.GetStringValue(node);
                        if (fieldName)
                        {
                            jsonWriter.WriteFieldName(value);
                        }
                        else
                        {
                            jsonWriter.WriteStringValue(value);
                        }
                    }
                    break;

                case JsonNodeType.Array:
                    {
                        jsonWriter.WriteArrayStart();

                        foreach (IJsonNavigatorNode arrayItem in this.GetArrayItems(node))
                        {
                            this.WriteNode(arrayItem, jsonWriter);
                        }

                        jsonWriter.WriteArrayEnd();
                    }
                    break;

                case JsonNodeType.Object:
                    {
                        jsonWriter.WriteObjectStart();

                        foreach (ObjectProperty objectProperty in this.GetObjectProperties(node))
                        {
                            this.WriteNode(objectProperty.NameNode, jsonWriter);
                            this.WriteNode(objectProperty.ValueNode, jsonWriter);
                        }

                        jsonWriter.WriteObjectEnd();
                    }
                    break;

                case JsonNodeType.Int8:
                    {
                        sbyte value = this.GetInt8Value(node);
                        jsonWriter.WriteInt8Value(value);
                    }
                    break;

                case JsonNodeType.Int16:
                    {
                        short value = this.GetInt16Value(node);
                        jsonWriter.WriteInt16Value(value);
                    }
                    break;

                case JsonNodeType.Int32:
                    {
                        int value = this.GetInt32Value(node);
                        jsonWriter.WriteInt32Value(value);
                    }
                    break;

                case JsonNodeType.Int64:
                    {
                        long value = this.GetInt64Value(node);
                        jsonWriter.WriteInt64Value(value);
                    }
                    break;

                case JsonNodeType.UInt32:
                    {
                        uint value = this.GetUInt32Value(node);
                        jsonWriter.WriteUInt32Value(value);
                    }
                    break;

                case JsonNodeType.Float32:
                    {
                        float value = this.GetFloat32Value(node);
                        jsonWriter.WriteFloat32Value(value);
                    }
                    break;

                case JsonNodeType.Float64:
                    {
                        double value = this.GetFloat64Value(node);
                        jsonWriter.WriteFloat64Value(value);
                    }
                    break;

                case JsonNodeType.Binary:
                    {
                        ReadOnlyMemory<byte> value = this.GetBinaryValue(node);
                        jsonWriter.WriteBinaryValue(value.Span);
                    }
                    break;

                case JsonNodeType.Guid:
                    {
                        Guid value = this.GetGuidValue(node);
                        jsonWriter.WriteGuidValue(value);
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException($"Unknown {nameof(JsonNodeType)}: {nodeType}.");
            }
        }