Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Read< TValue >()

static TValue System.Text.Json.JsonSerializer.Read< TValue > ( ref Utf8JsonReader reader,
JsonTypeInfo jsonTypeInfo )
inlinestaticprivate

Definition at line 1295 of file JsonSerializer.cs.

1296 {
1297 ReadStack state = default(ReadStack);
1298 state.Initialize(jsonTypeInfo);
1299 JsonReaderState currentState = reader.CurrentState;
1300 if (currentState.Options.CommentHandling == JsonCommentHandling.Allow)
1301 {
1303 }
1304 Utf8JsonReader utf8JsonReader = reader;
1307 try
1308 {
1309 JsonTokenType tokenType = reader.TokenType;
1311 if ((tokenType == JsonTokenType.None || tokenType == JsonTokenType.PropertyName) && !reader.Read())
1312 {
1313 bytes = default(ReadOnlySpan<byte>);
1314 ThrowHelper.ThrowJsonReaderException(ref reader, ExceptionResource.ExpectedOneCompleteToken, 0, bytes);
1315 }
1316 switch (reader.TokenType)
1317 {
1318 case JsonTokenType.StartObject:
1319 case JsonTokenType.StartArray:
1320 {
1321 long tokenStartIndex = reader.TokenStartIndex;
1322 if (!reader.TrySkip())
1323 {
1324 bytes = default(ReadOnlySpan<byte>);
1325 ThrowHelper.ThrowJsonReaderException(ref reader, ExceptionResource.NotEnoughData, 0, bytes);
1326 }
1328 ReadOnlySequence<byte> originalSequence = reader.OriginalSequence;
1329 if (originalSequence.IsEmpty)
1330 {
1331 bytes = reader.OriginalSpan;
1332 readOnlySpan = checked(bytes.Slice((int)tokenStartIndex, (int)num));
1333 }
1334 else
1335 {
1337 }
1338 break;
1339 }
1340 case JsonTokenType.Number:
1341 case JsonTokenType.True:
1342 case JsonTokenType.False:
1343 case JsonTokenType.Null:
1344 if (reader.HasValueSequence)
1345 {
1346 source = reader.ValueSequence;
1347 }
1348 else
1349 {
1350 readOnlySpan = reader.ValueSpan;
1351 }
1352 break;
1353 case JsonTokenType.String:
1354 {
1355 ReadOnlySequence<byte> originalSequence2 = reader.OriginalSequence;
1356 if (originalSequence2.IsEmpty)
1357 {
1358 bytes = reader.ValueSpan;
1359 int length = bytes.Length + 2;
1360 readOnlySpan = reader.OriginalSpan.Slice((int)reader.TokenStartIndex, length);
1361 break;
1362 }
1363 long num2 = 2L;
1364 if (reader.HasValueSequence)
1365 {
1366 num2 += reader.ValueSequence.Length;
1367 }
1368 else
1369 {
1370 long num3 = num2;
1371 bytes = reader.ValueSpan;
1372 num2 = num3 + bytes.Length;
1373 }
1374 source = originalSequence2.Slice(reader.TokenStartIndex, num2);
1375 break;
1376 }
1377 default:
1378 {
1379 byte b;
1380 if (reader.HasValueSequence)
1381 {
1382 bytes = reader.ValueSequence.First.Span;
1383 b = bytes[0];
1384 }
1385 else
1386 {
1387 bytes = reader.ValueSpan;
1388 b = bytes[0];
1389 }
1390 byte nextByte = b;
1391 bytes = default(ReadOnlySpan<byte>);
1392 ThrowHelper.ThrowJsonReaderException(ref reader, ExceptionResource.ExpectedStartOfValueNotFound, nextByte, bytes);
1393 break;
1394 }
1395 }
1396 }
1397 catch (JsonReaderException ex)
1398 {
1399 reader = utf8JsonReader;
1400 ThrowHelper.ReThrowWithPath(ref state, ex);
1401 }
1402 int num4 = (readOnlySpan.IsEmpty ? checked((int)source.Length) : readOnlySpan.Length);
1403 byte[] array = ArrayPool<byte>.Shared.Rent(num4);
1404 Span<byte> span = array.AsSpan(0, num4);
1405 try
1406 {
1407 if (readOnlySpan.IsEmpty)
1408 {
1410 }
1411 else
1412 {
1414 }
1415 JsonReaderOptions options = currentState.Options;
1416 Utf8JsonReader reader2 = new Utf8JsonReader(span, options);
1417 JsonConverter converterBase = state.Current.JsonPropertyInfo.ConverterBase;
1419 }
1420 catch (JsonException)
1421 {
1422 reader = utf8JsonReader;
1423 throw;
1424 }
1425 finally
1426 {
1427 span.Clear();
1428 ArrayPool<byte>.Shared.Return(array);
1429 }
1430 }
void CopyTo(KeyValuePair< TKey, TValue >[] array, int index)
static string JsonSerializerDoesNotSupportComments
Definition SR.cs:180
Definition SR.cs:7
static TValue ReadCore< TValue >(JsonConverter jsonConverter, ref Utf8JsonReader reader, JsonSerializerOptions options, ref ReadStack state)

References System.array, System.bytes, System.Collections.Generic.Dictionary< TKey, TValue >.Clear(), System.Collections.Generic.Dictionary< TKey, TValue >.CopyTo(), System.Text.Json.Dictionary, System.Text.Json.ReadStack.Initialize(), System.SR.JsonSerializerDoesNotSupportComments, System.L, System.length, System.options, System.Text.Json.JsonSerializer.ReadCore< TValue >(), System.Text.Json.ThrowHelper.ReThrowWithPath(), System.source, System.state, and System.Text.Json.ThrowHelper.ThrowJsonReaderException().

Referenced by System.Text.Json.JsonSerializer.Deserialize< TValue >(), and System.Text.Json.JsonSerializer.Deserialize< TValue >().