Exemplo n.º 1
0
        private static BlockMetadata ReadBlockMetadata(ref Utf8JsonStreamReader reader)
        {
            ushort id = 0;
            IList <DocumentMetadata> docs = Array.Empty <DocumentMetadata>();

            JsonReaderHelper.ReadToken(ref reader, JsonTokenType.StartObject);

            while (reader.Read() && reader.TokenType != JsonTokenType.EndObject)
            {
                var propertyName = reader.GetString();
                switch (propertyName)
                {
                case BlockIdPropertyName:
                    id = ParseId(JsonReaderHelper.ReadString(ref reader).AsSpan());
                    break;

                case DocumentMetadataListPropertyName:
                    docs = ReadDocumentsMetadata(ref reader);
                    break;

                default:
                    throw new InvalidDataException($"Unexpected property at position {reader.Position}: {propertyName}");
                }
            }

            return(new BlockMetadata(id, docs));
        }
Exemplo n.º 2
0
        private static IList <DocumentMetadata> ReadDocumentsMetadata(ref Utf8JsonStreamReader reader)
        {
            var docs = new List <DocumentMetadata>();

            JsonReaderHelper.ReadToken(ref reader, JsonTokenType.StartArray);
            while (reader.Read() && reader.TokenType != JsonTokenType.EndArray)
            {
                var doc = ReadDocumentMetadata(ref reader);
                docs.Add(doc);
            }

            return(docs);
        }