core/src/main/java/com/alibaba/fastjson2/JSONReaderUTF8.java [4308:4395]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private static int skipNumber(JSONReaderUTF8 jsonReader, byte[] bytes, int offset, int end) {
        int ch = jsonReader.ch;
        if (ch == '-' || ch == '+') {
            if (offset < end) {
                ch = bytes[offset++];
            } else {
                throw jsonReader.error();
            }
        }
        boolean dot = ch == '.';
        boolean num = false;
        if (!dot && (ch >= '0' && ch <= '9')) {
            num = true;
            while (IOUtils.isDigit2(bytes, offset)) {
                offset += 2;
            }
            do {
                ch = offset == end ? EOI : bytes[offset++];
            } while (ch >= '0' && ch <= '9');
        }

        if (num && (ch == 'L' | ch == 'F' | ch == 'D' | ch == 'B' | ch == 'S')) {
            ch = bytes[offset++];
        } else {
            boolean small = false;
            if (ch == '.') {
                small = true;
                ch = offset == end ? EOI : bytes[offset++];

                while (ch >= '0' && ch <= '9') {
                    ch = offset == end ? EOI : bytes[offset++];
                }
            }

            if (!num && !small) {
                throw numberError(offset, ch);
            }

            if (ch == 'e' || ch == 'E') {
                ch = bytes[offset++];

                boolean eSign = false;
                if (ch == '+' || ch == '-') {
                    eSign = true;
                    if (offset < end) {
                        ch = bytes[offset++];
                    } else {
                        throw numberError(offset, ch);
                    }
                }

                if (ch >= '0' && ch <= '9') {
                    do {
                        ch = offset == end ? EOI : bytes[offset++];
                    } while (ch >= '0' && ch <= '9');
                } else if (eSign) {
                    throw numberError(offset, ch);
                }
            }

            if (ch == 'F' || ch == 'D') {
                ch = offset == end ? EOI : bytes[offset++];
            }
        }

        while (ch <= ' ' && ((1L << ch) & SPACE) != 0) {
            ch = offset == end ? EOI : bytes[offset++];
        }

        boolean comma = false;
        if (ch == ',') {
            comma = true;
            ch = offset == end ? EOI : bytes[offset++];
            while (ch <= ' ' && ((1L << ch) & SPACE) != 0) {
                ch = offset == end ? EOI : bytes[offset++];
            }

            if ((ch == '}' || ch == ']' || ch == EOI)) {
                throw jsonReader.error(offset, ch);
            }
        } else if (ch != '}' && ch != ']' && ch != EOI) {
            throw jsonReader.error(offset, ch);
        }

        jsonReader.comma = comma;
        jsonReader.ch = (char) ch;
        return offset;
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



core/src/main/java/com/alibaba/fastjson2/JSONReaderUTF16.java [3166:3253]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private static int skipNumber(JSONReaderUTF16 jsonReader, char[] bytes, int offset, int end) {
        int ch = jsonReader.ch;
        if (ch == '-' || ch == '+') {
            if (offset < end) {
                ch = bytes[offset++];
            } else {
                throw jsonReader.error();
            }
        }
        boolean dot = ch == '.';
        boolean num = false;
        if (!dot && (ch >= '0' && ch <= '9')) {
            num = true;
            while (IOUtils.isDigit2(bytes, offset)) {
                offset += 2;
            }
            do {
                ch = offset == end ? EOI : bytes[offset++];
            } while (ch >= '0' && ch <= '9');
        }

        if (num && (ch == 'L' | ch == 'F' | ch == 'D' | ch == 'B' | ch == 'S')) {
            ch = bytes[offset++];
        } else {
            boolean small = false;
            if (ch == '.') {
                small = true;
                ch = offset == end ? EOI : bytes[offset++];

                while (ch >= '0' && ch <= '9') {
                    ch = offset == end ? EOI : bytes[offset++];
                }
            }

            if (!num && !small) {
                throw numberError(offset, ch);
            }

            if (ch == 'e' || ch == 'E') {
                ch = bytes[offset++];

                boolean eSign = false;
                if (ch == '+' || ch == '-') {
                    eSign = true;
                    if (offset < end) {
                        ch = bytes[offset++];
                    } else {
                        throw numberError(offset, ch);
                    }
                }

                if (ch >= '0' && ch <= '9') {
                    do {
                        ch = offset == end ? EOI : bytes[offset++];
                    } while (ch >= '0' && ch <= '9');
                } else if (eSign) {
                    throw numberError(offset, ch);
                }
            }

            if (ch == 'F' || ch == 'D') {
                ch = offset == end ? EOI : bytes[offset++];
            }
        }

        while (ch <= ' ' && ((1L << ch) & SPACE) != 0) {
            ch = offset == end ? EOI : bytes[offset++];
        }

        boolean comma = false;
        if (ch == ',') {
            comma = true;
            ch = offset == end ? EOI : bytes[offset++];
            while (ch <= ' ' && ((1L << ch) & SPACE) != 0) {
                ch = offset == end ? EOI : bytes[offset++];
            }

            if ((ch == '}' || ch == ']' || ch == EOI)) {
                throw jsonReader.error(offset, ch);
            }
        } else if (ch != '}' && ch != ']' && ch != EOI) {
            throw jsonReader.error(offset, ch);
        }

        jsonReader.comma = comma;
        jsonReader.ch = (char) ch;
        return offset;
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



