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)); }
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); }