コード例 #1
0
        public override void Write(
            Utf8JsonWriter writer,
            OpenApiQuerySingleResult <T> value,
            JsonSerializerOptions options)
        {
            var itemType     = _typeHandler.ResolveType(typeof(T));
            var selectClause = value.Options?.SelectExpand.RootSelectClause;

            JsonHelper.WriteObject(writer, itemType, value.ResultItem, selectClause, _typeHandler, options);
        }
コード例 #2
0
        public override OpenApiQuerySingleResult <T> Read(
            ref Utf8JsonReader reader,
            Type typeToConvert,
            JsonSerializerOptions options)
        {
            if (reader.TokenType != JsonTokenType.StartObject)
            {
                throw new JsonException($"Unexpected JSON Token {reader.TokenType}.");
            }

            var actualClrType = typeof(T);
            var actualType    = _typeHandler.ResolveType(actualClrType);

            var document = JsonDocument.ParseValue(ref reader);
            var result   = new OpenApiQuerySingleResult <T>
            {
                ResultItem = (T)JsonHelper.ReadValue(document.RootElement,
                                                     actualType,
                                                     actualClrType,
                                                     _typeHandler)
            };

            return(result);
        }