490 {
493 {
494 return false;
495 }
496 if (
state.Current.ObjectState == StackFrameObjectState.ReadNameOrEndObject)
497 {
498 if (reader.TokenType != JsonTokenType.PropertyName)
499 {
500 ThrowHelper.ThrowJsonException_MetadataPreservedArrayValuesNotFound(
ref state,
converterBase.TypeToConvert);
501 }
504 {
505 case MetadataPropertyName.Id:
508 {
509 ThrowHelper.ThrowJsonException_MetadataCannotParsePreservedObjectIntoImmutable(
converterBase.TypeToConvert);
510 }
512 break;
513 case MetadataPropertyName.Ref:
516 {
517 ThrowHelper.ThrowJsonException_MetadataInvalidReferenceToValueType(
converterBase.TypeToConvert);
518 }
520 break;
521 case MetadataPropertyName.Values:
522 ThrowHelper.ThrowJsonException_MetadataMissingIdBeforeValues(
ref state,
span);
523 break;
524 default:
525 ThrowHelper.ThrowJsonException_MetadataPreservedArrayInvalidProperty(
ref state,
converterBase.TypeToConvert,
in reader);
526 break;
527 }
528 }
529 if (
state.Current.ObjectState == StackFrameObjectState.ReadAheadRefValue)
530 {
532 {
533 return false;
534 }
535 }
537 {
538 return false;
539 }
540 if (
state.Current.ObjectState == StackFrameObjectState.ReadRefValue)
541 {
542 if (reader.TokenType != JsonTokenType.String)
543 {
544 ThrowHelper.ThrowJsonException_MetadataValueWasNotString(reader.TokenType);
545 }
546 string @string = reader.GetString();
547 object obj =
state.ReferenceResolver.ResolveReference(@
string);
551 }
552 else if (
state.Current.ObjectState == StackFrameObjectState.ReadIdValue)
553 {
554 if (reader.TokenType != JsonTokenType.String)
555 {
556 ThrowHelper.ThrowJsonException_MetadataValueWasNotString(reader.TokenType);
557 }
559 string string2 = reader.GetString();
562 }
565 {
566 return false;
567 }
568 if (
state.Current.ObjectState == StackFrameObjectState.ReadRefEndObject)
569 {
570 if (reader.TokenType != JsonTokenType.EndObject)
571 {
572 ThrowHelper.ThrowJsonException_MetadataReferenceObjectCannotContainOtherProperties(reader.GetSpan(),
ref state);
573 }
574 return true;
575 }
577 {
578 return false;
579 }
580 if (
state.Current.ObjectState == StackFrameObjectState.ReadValuesName)
581 {
582 if (reader.TokenType != JsonTokenType.PropertyName)
583 {
584 ThrowHelper.ThrowJsonException_MetadataPreservedArrayValuesNotFound(
ref state,
converterBase.TypeToConvert);
585 }
588 {
589 ThrowHelper.ThrowJsonException_MetadataPreservedArrayInvalidProperty(
ref state,
converterBase.TypeToConvert,
in reader);
590 }
593 }
595 {
596 return false;
597 }
598 if (
state.Current.ObjectState == StackFrameObjectState.ReadValuesStartArray)
599 {
600 if (reader.TokenType != JsonTokenType.StartArray)
601 {
602 ThrowHelper.ThrowJsonException_MetadataValuesInvalidToken(reader.TokenType);
603 }
606 }
607 return true;
608 }
static void ValidateValueIsCorrectType< T >(object value, string referenceId)
static readonly byte[] s_refPropertyName
static readonly byte[] s_valuesPropertyName
static bool TryReadAheadMetadataAndSetState(ref Utf8JsonReader reader, ref ReadStack state, StackFrameObjectState nextState)
static MetadataPropertyName GetMetadataPropertyName(ReadOnlySpan< byte > propertyName)
static readonly byte[] s_idPropertyName