This commit is contained in:
Redkale
2017-11-22 20:08:23 +08:00
parent 5a690912c1
commit 0801ce8cad
2 changed files with 13 additions and 7 deletions

View File

@@ -476,10 +476,16 @@ public class JsonReader extends Reader {
} }
} }
if (expected != '"' && expected != '\'') { if (expected != '"' && expected != '\'') {
if (expected == 'n' && ((text0.length == currpos + 4 && (text0[1 + currpos] == 'u' && text0[2 + currpos] == 'l' && text0[3 + currpos] == 'l')) if (expected == 'n' && text0.length > currpos + 3 && (text0[1 + currpos] == 'u' && text0[2 + currpos] == 'l' && text0[3 + currpos] == 'l')) {
|| (text0.length > currpos + 4 && (text0[1 + currpos] == 'u' && text0[2 + currpos] == 'l' && text0[3 + currpos] == 'l') if (text0[++currpos] == 'u' && text0[++currpos] == 'l' && text0[++currpos] == 'l') {
&& (text0[4 + currpos] == ',' || text0[4 + currpos] <= ' ' || text0[4 + currpos] == '}' || text0[4 + currpos] == ']' || text0[4 + currpos] == ':')))) { this.position = currpos;
if (text0.length > currpos + 4) {
char ch = text0[currpos + 1];
if (ch == ',' || ch <= ' ' || ch == '}' || ch == ']' || ch == ':') return null;
} else {
return null; return null;
}
}
} else { } else {
final int start = currpos; final int start = currpos;
for (;;) { for (;;) {
@@ -492,8 +498,8 @@ public class JsonReader extends Reader {
this.position = currpos - 1; this.position = currpos - 1;
return new String(text0, start, currpos - start); return new String(text0, start, currpos - start);
} }
//this.position = currpos; this.position = currpos;
//throw new ConvertException("expected a ':' after a key but '" + text0[position] + "' (position = " + position + ") in (" + new String(this.text) + ")"); throw new ConvertException("expected a ':' after a key but '" + text0[position] + "' (position = " + position + ") in (" + new String(this.text) + ")");
} }
final int start = ++currpos; final int start = ++currpos;
for (;;) { for (;;) {

View File

@@ -21,7 +21,7 @@ public class JsonTestMain {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
JsonFactory factory = JsonFactory.root().tiny(true); JsonFactory factory = JsonFactory.root().tiny(true);
final JsonConvert convert = JsonConvert.root(); final JsonConvert convert = JsonConvert.root();
String json = "{\"access_token\":\"vVX2bIjN5P9TMOphDkStM96eNWapAehTuWAlVDO74aFaYxLwj2b-9-T9p_W2mfr9\",\"expires_in\":7200, \"aa\":\"\"}"; String json = "{\"access_token\":\"vVX2bIjN5P9TMOphDkStM96eNWapAehTuWAlVDO74aFaYxLwj2b-9-T9p_W2mfr9\",\"priv\":null,\"priv2\":\"nulla\",\"expires_in\":7200, \"aa\":\"\"}";
Map<String, String> map = convert.convertFrom(JsonConvert.TYPE_MAP_STRING_STRING, json); Map<String, String> map = convert.convertFrom(JsonConvert.TYPE_MAP_STRING_STRING, json);
System.out.println(map); System.out.println(map);
System.out.println(convert.convertTo(map)); System.out.println(convert.convertTo(map));