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 DocumentMetadata ReadDocumentMetadata(ref Utf8JsonStreamReader reader) { var id = DocumentId.Zero; var title = string.Empty; while (reader.Read() && reader.TokenType == JsonTokenType.PropertyName) { var propertyName = reader.GetString(); switch (propertyName) { case DocumentIdPropertyName: id = DocumentId.Parse(JsonReaderHelper.ReadString(ref reader).AsSpan()); break; case TitlePropertyName: title = JsonReaderHelper.ReadString(ref reader); break; default: throw new InvalidDataException($"Unexpected property at position {reader.Position}: {propertyName}"); } } return(new DocumentMetadata(id, title)); }