我正在編寫一個 Spigot 插件來生成板條箱。這個 JsonReader 掃描寶庫文件以獲取我請求的特定設(shè)置。問題是,我不想一遍又一遍地復(fù)制相同的 while 循環(huán),所以我決定做這個。它成功讀取前六個標(biāo)記,但它在標(biāo)記 6 處停止,“最大軸”數(shù)組在此處停止。那里沒有逗號。當(dāng)我將第四個數(shù)字添加到數(shù)組時,它甚至?xí)x取它,但在該數(shù)字處停止,因為那里沒有逗號。JsonReader.setLenient(true)是使用,JsonWriter.setLenient(true)用于寫文件。我試過將作者設(shè)置為假。這寫的方式很奇怪,但這只是為了測試?,F(xiàn)在不需要從文件中實際返回值。PoolFile.scanDocument()private Object scanDocument(JsonReader reader, Shell handleObj) { reader.setLenient(true); int retval = -2; try { JsonToken token = null; Object current = -5; while (reader.hasNext()) { token = reader.peek(); //if (token == JsonToken.END_DOCUMENT) break; // Output while reading: 0 2 1 3 3 3 switch(token) { case BEGIN_OBJECT: reader.beginObject(); retval = 0; break; case BEGIN_ARRAY: reader.beginArray(); retval = 1; break; case NAME: current = reader.nextName(); retval = 2; break; case NUMBER: current = reader.nextDouble(); retval = 3; break; case BOOLEAN: current = reader.nextBoolean(); retval = 4; break; case STRING: current = reader.nextString(); retval = 5; break; case END_ARRAY: reader.endArray(); retval = 6; break; case END_OBJECT: reader.endObject(); retval = 7; break; default: reader.skipValue(); retval = -1; } handleObj.doWithJSONObject(token, retval); } } catch (IOException e) { retval = -1; e.printStackTrace(); } return retval;}默認(rèn)池.json{ "max-axis": [ 50.0, -1.0, 50.0 // It stops here. ], "pools": [ { "label": "test", "items": {} } ]}編輯如果您想查看該應(yīng)用程序,請訪問 GitHub 頁面。來源位于skycrates/src/main
JsonReader 在數(shù)組末尾停止讀取
慕桂英3389331
2021-09-12 10:50:17