示例#1
0
        public void ReadNextCore(JsonToken token)
        {
            switch (token)
            {
            case JsonToken.BeginObject:
            case JsonToken.BeginArray:
            case JsonToken.ValueSeparator:
            case JsonToken.NameSeparator:
            case JsonToken.EndObject:
            case JsonToken.EndArray:
                Reader.Advance(1);
                break;

            case JsonToken.True:
            case JsonToken.Null:
                Reader.Advance(4);
                break;

            case JsonToken.False:
                Reader.Advance(5);
                break;

            case JsonToken.String:
                Reader.Advance(1);
                if (!Reader.TryReadToAdvancePastDelimiter(out var _, (byte)'"', (byte)'\\'))
                {
                    throw new JsonParsingException(ExpectedFirst + "not found end string." + ExpectedLast);
                }
                break;

            case JsonToken.Number:
                Reader.AdvanceToAnyOrEnd(new[]
                {
                    (byte)' ',
                    (byte)'\t',
                    (byte)'\r',
                    (byte)'\n',
                    (byte)',',
                    (byte)']',
                    (byte)'}',
                    (byte)'"',
                });
                break;

            case JsonToken.None:
            default:
                break;
            }
        }