401 {
404 {
405 return false;
406 }
407 if (
state.Current.ObjectState == StackFrameObjectState.ReadNameOrEndObject)
408 {
409 if (reader.TokenType != JsonTokenType.PropertyName)
410 {
413 return true;
414 }
417 {
418 case MetadataPropertyName.Id:
421 {
422 ThrowHelper.ThrowJsonException_MetadataCannotParsePreservedObjectIntoImmutable(
converterBase.TypeToConvert);
423 }
425 break;
426 case MetadataPropertyName.Ref:
429 {
430 ThrowHelper.ThrowJsonException_MetadataInvalidReferenceToValueType(
converterBase.TypeToConvert);
431 }
433 break;
434 case MetadataPropertyName.Values:
435 ThrowHelper.ThrowJsonException_MetadataInvalidPropertyWithLeadingDollarSign(
span,
ref state,
in reader);
436 break;
437 default:
440 return true;
441 }
442 }
443 if (
state.Current.ObjectState == StackFrameObjectState.ReadAheadRefValue)
444 {
446 {
447 return false;
448 }
449 }
451 {
452 return false;
453 }
454 if (
state.Current.ObjectState == StackFrameObjectState.ReadRefValue)
455 {
456 if (reader.TokenType != JsonTokenType.String)
457 {
458 ThrowHelper.ThrowJsonException_MetadataValueWasNotString(reader.TokenType);
459 }
460 string @string = reader.GetString();
461 object obj =
state.ReferenceResolver.ResolveReference(@
string);
465 }
466 else if (
state.Current.ObjectState == StackFrameObjectState.ReadIdValue)
467 {
468 if (reader.TokenType != JsonTokenType.String)
469 {
470 ThrowHelper.ThrowJsonException_MetadataValueWasNotString(reader.TokenType);
471 }
473 string string2 = reader.GetString();
476 }
479 {
480 return false;
481 }
482 if (
state.Current.ObjectState == StackFrameObjectState.ReadRefEndObject && reader.TokenType != JsonTokenType.EndObject)
483 {
484 ThrowHelper.ThrowJsonException_MetadataReferenceObjectCannotContainOtherProperties(reader.GetSpan(),
ref state);
485 }
486 return true;
487 }
static void ValidateValueIsCorrectType< T >(object value, string referenceId)
static readonly byte[] s_refPropertyName
static bool TryReadAheadMetadataAndSetState(ref Utf8JsonReader reader, ref ReadStack state, StackFrameObjectState nextState)
static MetadataPropertyName GetMetadataPropertyName(ReadOnlySpan< byte > propertyName)
static readonly byte[] s_idPropertyName