@@ -419,30 +419,7 @@ private async ValueTask FillAsync(SettingsStorage storage, JsonReader reader, Ca
419419 }
420420 case JsonToken . StartArray :
421421 {
422- await reader . ReadWithCheckAsync ( cancellationToken ) ;
423-
424- var list = new List < object > ( ) ;
425-
426- while ( reader . TokenType != JsonToken . EndArray )
427- {
428- switch ( reader . TokenType )
429- {
430- case JsonToken . StartObject :
431- {
432- var inner = new SettingsStorage ( ) ;
433- await FillAsync ( inner , reader , cancellationToken ) ;
434- list . Add ( inner ) ;
435- break ;
436- }
437- default :
438- list . Add ( reader . Value ) ;
439- break ;
440- }
441-
442- await reader . ReadWithCheckAsync ( cancellationToken ) ;
443- }
444-
445- value = list . ToArray ( ) ;
422+ value = await ReadArrayAsync ( reader , cancellationToken ) ;
446423 break ;
447424 }
448425 default :
@@ -454,6 +431,39 @@ private async ValueTask FillAsync(SettingsStorage storage, JsonReader reader, Ca
454431 }
455432 }
456433
434+ private async ValueTask < object [ ] > ReadArrayAsync ( JsonReader reader , CancellationToken cancellationToken )
435+ {
436+ await reader . ReadWithCheckAsync ( cancellationToken ) ;
437+
438+ var list = new List < object > ( ) ;
439+
440+ while ( reader . TokenType != JsonToken . EndArray )
441+ {
442+ switch ( reader . TokenType )
443+ {
444+ case JsonToken . StartObject :
445+ {
446+ var inner = new SettingsStorage ( ) ;
447+ await FillAsync ( inner , reader , cancellationToken ) ;
448+ list . Add ( inner ) ;
449+ break ;
450+ }
451+ case JsonToken . StartArray :
452+ {
453+ list . Add ( await ReadArrayAsync ( reader , cancellationToken ) ) ;
454+ break ;
455+ }
456+ default :
457+ list . Add ( reader . Value ) ;
458+ break ;
459+ }
460+
461+ await reader . ReadWithCheckAsync ( cancellationToken ) ;
462+ }
463+
464+ return list . ToArray ( ) ;
465+ }
466+
457467 private async ValueTask TryClearDeepLevel ( JsonReader reader , SettingsStorage storage , CancellationToken cancellationToken )
458468 {
459469 var lvl = storage . DeepLevel ;
0 commit comments