亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jsontokener.java

?? AJAX基礎編程--源代碼
?? JAVA
字號:
package org.json;/*Copyright (c) 2002 JSON.orgPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.The Software shall be used for Good, not Evil.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.*/import java.text.ParseException;/** * A JSONTokener takes a source string and extracts characters and tokens from * it. It is used by the JSONObject and JSONArray constructors to parse * JSON source strings. * @author JSON.org * @version 1 */public class JSONTokener {    /**     * The index of the next character.     */    private int myIndex;    /**     * The source string being tokenized.     */    private String mySource;    /**     * Construct a JSONTokener from a string.     *     * @param s     A source string.     */    public JSONTokener(String s) {        myIndex = 0;        mySource = s;    }    /**     * Back up one character. This provides a sort of lookahead capability,     * so that you can test for a digit or letter before attempting to parse     * the next number or identifier.     */    public void back() {        if (myIndex > 0) {            myIndex -= 1;        }    }    /**     * Get the hex value of a character (base16).     * @param c A character between '0' and '9' or between 'A' and 'F' or     * between 'a' and 'f'.     * @return  An int between 0 and 15, or -1 if c was not a hex digit.     */    public static int dehexchar(char c) {        if (c >= '0' && c <= '9') {            return c - '0';        }        if (c >= 'A' && c <= 'F') {            return c + 10 - 'A';        }        if (c >= 'a' && c <= 'f') {            return c + 10 - 'a';        }        return -1;    }    /**     * Determine if the source string still contains characters that next()     * can consume.     * @return true if not yet at the end of the source.     */    public boolean more() {        return myIndex < mySource.length();    }    /**     * Get the next character in the source string.     *     * @return The next character, or 0 if past the end of the source string.     */    public char next() {        char c = more() ? mySource.charAt(myIndex) : 0;        myIndex += 1;        return c;    }    /**     * Consume the next character, and check that it matches a specified     * character.     * @throws ParseException if the character does not match.     * @param c The character to match.     * @return The character.     */    public char next(char c) throws ParseException {        char n = next();        if (n != c) {            throw syntaxError("Expected '" + c + "' and instead saw '" +                    n + "'.");        }        return n;    }    /**     * Get the next n characters.     * @exception ParseException     *   Substring bounds error if there are not     *   n characters remaining in the source string.     *     * @param n     The number of characters to take.     * @return      A string of n characters.     */     public String next(int n) throws ParseException {         int i = myIndex;         int j = i + n;         if (j >= mySource.length()) {            throw syntaxError("Substring bounds error");         }         myIndex += n;         return mySource.substring(i, j);     }    /**     * Get the next char in the string, skipping whitespace     * and comments (slashslash, slashstar, and hash).     * @throws ParseException     * @return  A character, or 0 if there are no more characters.     */    public char nextClean() throws java.text.ParseException {        while (true) {            char c = next();            if (c == '/') {                switch (next()) {                case '/':                    do {                        c = next();                    } while (c != '\n' && c != '\r' && c != 0);                    break;                case '*':                    while (true) {                        c = next();                        if (c == 0) {                            throw syntaxError("Unclosed comment.");                        }                        if (c == '*') {                            if (next() == '/') {                                break;                            }                            back();                        }                    }                    break;                default:                    back();                    return '/';                }            } else if (c == '#') {                do {                    c = next();                } while (c != '\n' && c != '\r' && c != 0);			} else if (c == 0 || c > ' ') {                return c;            }        }    }    /**     * Return the characters up to the next close quote character.     * Backslash processing is done. The formal JSON format does not     * allow strings in single quotes, but an implementation is allowed to     * accept them.     * @exception ParseException Unterminated string.     * @param quote The quoting character, either      * 		<code>"</code>&nbsp;<small>(double quote)</small> or      * 		<code>'</code>&nbsp;<small>(single quote)</small>.     * @return      A String.     */    public String nextString(char quote) throws ParseException {        char c;        StringBuffer sb = new StringBuffer();        while (true) {            c = next();            switch (c) {            case 0:            case 0x0A:            case 0x0D:                throw syntaxError("Unterminated string");            case '\\':                c = next();                switch (c) {                case 'b':                    sb.append('\b');                    break;                case 't':                    sb.append('\t');                    break;                case 'n':                    sb.append('\n');                    break;                case 'f':                    sb.append('\f');                    break;                case 'r':                    sb.append('\r');                    break;                case 'u':                    sb.append((char)Integer.parseInt(next(4), 16));                    break;                case 'x' :                    sb.append((char) Integer.parseInt(next(2), 16));                    break;                default:                    sb.append(c);                }                break;            default:                if (c == quote) {                    return sb.toString();                }                sb.append(c);            }        }    }    /**     * Get the text up but not including the specified character or the     * end of line, whichever comes first.     * @param  d A delimiter character.     * @return   A string.     */    public String nextTo(char d) {        StringBuffer sb = new StringBuffer();        while (true) {            char c = next();            if (c == d || c == 0 || c == '\n' || c == '\r') {                if (c != 0) {                    back();                }                return sb.toString().trim();            }            sb.append(c);        }    }    /**     * Get the text up but not including one of the specified delimeter     * characters or the end of line, which ever comes first.     * @param delimiters A set of delimiter characters.     * @return A string, trimmed.     */    public String nextTo(String delimiters) {        char c;        StringBuffer sb = new StringBuffer();        while (true) {            c = next();            if (delimiters.indexOf(c) >= 0 || c == 0 ||                    c == '\n' || c == '\r') {                if (c != 0) {                    back();                }                return sb.toString().trim();            }            sb.append(c);        }    }    /**     * Get the next value. The value can be a Boolean, Double, Integer,     * JSONArray, JSONObject, or String, or the JSONObject.NULL object.     * @exception ParseException The source does not conform to JSON syntax.     *     * @return An object.     */    public Object nextValue() throws ParseException {        char c = nextClean();        String s;        switch (c) {        	case '"':        	case '\'':				return nextString(c);        	case '{':	            back();	            return new JSONObject(this);        	case '[':	            back();	            return new JSONArray(this);        }				/*		 * Handle unquoted text. This could be the values true, false, and		 * null, or it can be a number. An implementation (such as this one)		 * is allowed to also accept non-standard forms.		 * 		 * Accumulate characters until we reach the end of the text or a		 * formatting character.		 */		        StringBuffer sb = new StringBuffer();        char b = c;        while (c >= ' ' && ",:]}/\\[{;=#".indexOf(c) < 0) {            sb.append(c);            c = next();        }        back();				/*		 * If it is true, false, or null, return the proper value.		 */		        s = sb.toString().trim();        if (s.equals("")) {            throw syntaxError("Missing value.");        }		if (s.equals("true")) {            return Boolean.TRUE;        }        if (s.equals("false")) {            return Boolean.FALSE;        }        if (s.equals("null")) {            return JSONObject.NULL;        }				/*		 * If it might be a number, try converting it. We support the 0- and 0x-		 * conventions. If a number cannot be produced, then the value will just		 * be a string. Note that the 0-, 0x-, plus, and implied string 		 * conventions are non-standard. A JSON parser is free to accept 		 * non-JSON forms as long as it accepts all correct JSON forms.		 */		        if ((b >= '0' && b <= '9') || b == '.' || b == '-' || b == '+') {			if (b == '0') {				if (s.length() > 2 && 						(s.charAt(1) == 'x' || s.charAt(1) == 'X')) {					try {						return new Integer(Integer.parseInt(s.substring(2), 								                            16));					} catch (Exception e) {}				} else {					try {	    				return new Integer(Integer.parseInt(s, 8));					} catch (Exception e){}				}			}            try {                return new Integer(s);            } catch (Exception e) {}			try {				return new Double(s);            }  catch (Exception e) {}        }        return s;    }    /**     * Skip characters until the next character is the requested character.     * If the requested character is not found, no characters are skipped.     * @param to A character to skip to.     * @return The requested character, or zero if the requested character     * is not found.     */    public char skipTo(char to) {        char c;        int index = myIndex;        do {            c = next();            if (c == 0) {                myIndex = index;                return c;            }        } while (c != to);        back();        return c;    }    /**     * Skip characters until past the requested string.     * If it is not found, we are left at the end of the source.     * @param to A string to skip past.     */    public void skipPast(String to) {        myIndex = mySource.indexOf(to, myIndex);        if (myIndex < 0) {            myIndex = mySource.length();        } else {            myIndex += to.length();        }    }    /**     * Make a ParseException to signal a syntax error.     *     * @param message The error message.     * @return  A ParseException object, suitable for throwing     */    public ParseException syntaxError(String message) {        return new ParseException(message + toString(), myIndex);    }    /**     * Make a printable string of this JSONTokener.     *     * @return " at character [myIndex] of [mySource]"     */    public String toString() {        return " at character " + myIndex + " of " + mySource;    }    /**     * Convert <code>%</code><i>hh</i> sequences to single characters, and      * convert plus to space.     * @param s A string that may contain      * 		<code>+</code>&nbsp;<small>(plus)</small> and      * 		<code>%</code><i>hh</i> sequences.     * @return The unescaped string.     */    public static String unescape(String s) {        int len = s.length();        StringBuffer b = new StringBuffer();        for (int i = 0; i < len; ++i) {            char c = s.charAt(i);            if (c == '+') {                c = ' ';            } else if (c == '%' && i + 2 < len) {                int d = dehexchar(s.charAt(i + 1));                int e = dehexchar(s.charAt(i + 2));                if (d >= 0 && e >= 0) {                    c = (char)(d * 16 + e);                    i += 2;                }            }            b.append(c);        }        return b.toString();    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美aa在线视频| 亚洲国产乱码最新视频| 日韩你懂的在线播放| 欧美日韩国产高清一区| 99riav久久精品riav| 国产成a人亚洲| 国产91丝袜在线观看| 麻豆成人久久精品二区三区红| 亚洲第一二三四区| 亚洲成人免费看| 首页国产欧美日韩丝袜| 亚洲韩国一区二区三区| 日韩国产欧美视频| 免费看精品久久片| 国内精品第一页| 国产九九视频一区二区三区| 国产成人一区二区精品非洲| 国产成人综合亚洲91猫咪| 国产成人亚洲精品狼色在线| 高清不卡一区二区在线| 94-欧美-setu| 欧美中文字幕久久| 日韩一级黄色片| 国产视频一区二区三区在线观看| 国产欧美日韩综合| 亚洲男同1069视频| 丝袜美腿一区二区三区| 美女网站视频久久| 国产·精品毛片| 91蝌蚪porny| 欧美剧情片在线观看| 久久久精品蜜桃| 亚洲精品中文在线| 日韩激情中文字幕| 丁香天五香天堂综合| 日本精品视频一区二区| 日韩精品综合一本久道在线视频| 国产婷婷一区二区| 亚洲高清免费观看高清完整版在线观看| 一区二区三区四区激情| 美腿丝袜亚洲色图| av色综合久久天堂av综合| 欧美人成免费网站| 日本一区二区三区国色天香| 亚洲永久免费av| 国产另类ts人妖一区二区| 色婷婷久久久亚洲一区二区三区| 91精品国产色综合久久ai换脸| 欧美经典一区二区| 日本中文字幕不卡| 99综合电影在线视频| 日韩一级精品视频在线观看| 亚洲人成影院在线观看| 国产一区二区精品久久91| 欧洲亚洲精品在线| 国产精品国产三级国产普通话三级 | 一区二区三区在线视频免费 | 日韩一级完整毛片| 亚洲女同ⅹxx女同tv| 国内国产精品久久| 欧美日韩精品欧美日韩精品一| 久久日韩精品一区二区五区| 香蕉加勒比综合久久| 91在线看国产| 国产人伦精品一区二区| 男女激情视频一区| 欧美三级日本三级少妇99| 国产精品护士白丝一区av| 国产精品白丝jk黑袜喷水| 日韩欧美国产电影| 免费亚洲电影在线| 8x8x8国产精品| 亚洲线精品一区二区三区| eeuss鲁一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 久久黄色级2电影| 91精品国产一区二区人妖| 亚洲一区二区三区四区的| 在线一区二区视频| 亚洲精品v日韩精品| 91视视频在线观看入口直接观看www| 久久精品一区八戒影视| 国产一二三精品| 久久精品一区二区三区四区| 激情深爱一区二区| 国产午夜精品一区二区三区嫩草| 国产一区二区三区精品欧美日韩一区二区三区 | 极品美女销魂一区二区三区| 欧美一级淫片007| 精品一二三四区| 欧美一区二区三区不卡| 九一久久久久久| 国产日韩视频一区二区三区| 成人免费视频国产在线观看| 中文字幕在线不卡一区| 99re成人精品视频| 亚洲妇熟xx妇色黄| 精品久久久久久久久久久久包黑料| 免费在线看成人av| 久久九九影视网| 播五月开心婷婷综合| 亚洲国产成人av| 日韩三级中文字幕| 成人妖精视频yjsp地址| 一区在线播放视频| 欧美乱妇一区二区三区不卡视频| 美女网站色91| 亚洲人成7777| 欧美一级xxx| 成人福利视频在线| 日精品一区二区| 国产偷国产偷亚洲高清人白洁| 日本精品一级二级| 国内精品免费**视频| 亚洲视频图片小说| 26uuu久久综合| 在线一区二区三区四区| 久久99这里只有精品| 中文字幕一区二区三区在线观看| 欧美三片在线视频观看| 国产福利视频一区二区三区| 一区二区高清免费观看影视大全 | 国产清纯白嫩初高生在线观看91| 99久久夜色精品国产网站| 日本美女视频一区二区| 亚洲欧美视频在线观看| 精品国产乱码久久久久久免费| 99精品欧美一区二区蜜桃免费 | 精品日韩欧美在线| 色哟哟欧美精品| 国产精品 日产精品 欧美精品| 五月天欧美精品| 中文字幕在线不卡一区二区三区| 精品毛片乱码1区2区3区| 欧美熟乱第一页| 成人免费毛片aaaaa**| 久久99精品国产麻豆不卡| 亚洲国产日韩a在线播放性色| 国产欧美精品一区aⅴ影院| 日韩一区二区三区视频| 欧美日韩精品一区二区天天拍小说| 成人av电影在线播放| 高清免费成人av| 国产一区二区三区日韩| 老司机免费视频一区二区| 亚洲成精国产精品女| 一区二区三区电影在线播| 中文字幕成人av| 久久综合五月天婷婷伊人| 欧美一区二区三区色| 欧美优质美女网站| 日本道精品一区二区三区| 97精品电影院| 91黄视频在线观看| a4yy欧美一区二区三区| 99视频一区二区| 北条麻妃国产九九精品视频| 国产伦精品一区二区三区免费| 久久99深爱久久99精品| 激情综合网天天干| 久久成人麻豆午夜电影| 精品一区二区三区在线视频| 秋霞午夜av一区二区三区| 久草热8精品视频在线观看| 九九国产精品视频| 国产成+人+日韩+欧美+亚洲| 大尺度一区二区| 91在线视频网址| 欧美亚洲国产怡红院影院| 欧美日本一区二区三区| 欧美一级在线视频| 精品国产乱码久久久久久牛牛| 久久香蕉国产线看观看99| 日本一区二区三区久久久久久久久不 | 欧美亚洲精品一区| 欧美一区二区三区四区久久| 欧美久久久一区| 日韩精品专区在线影院重磅| 国产无一区二区| 综合在线观看色| 亚洲bt欧美bt精品777| 麻豆91免费看| 东方aⅴ免费观看久久av| 欧美在线观看一区| 日韩一级片在线播放| 欧美激情一区二区三区四区| 最好看的中文字幕久久| 日韩av电影免费观看高清完整版| 蜜乳av一区二区| 成人app在线观看| 欧美人与z0zoxxxx视频| 国产欧美一区在线| 亚洲国产一二三| 国产一区二区精品久久99| 91麻豆免费在线观看| 2024国产精品| 亚洲丰满少妇videoshd| 国产精品羞羞答答xxdd| 欧美日韩夫妻久久| 国产精品成人在线观看|