Учитывая ваши данные JSON {"BaseID":1,"BaseName":"Bandar-e-Jask Airbase","InGameCord":[{"x":463,"y":451}]}
:
"InGameCord"
- это имя массива, для которого может быть создан экземпляр JSONArray
. {"x":463,"y":451}
. Этот элемент массива может быть создан как JSONObject
. Он содержит две пары имя / значение:
"x"
со значением 463. "y"
со значением 451. На основании предоставленного вами кода создать экземпляр JSONArray
:
JSONArray numbers = (JSONArray) jsonObject.get("InGameCord");
Извлечь первый (и единственный) элемент массива в JSONObject
:
JSONObject jObj = (JSONObject) numbers.get(0);
Чтобы получить значение для «x» в переменную int
, приведите Object
, возвращенное get()
к а Number
, а затем получить его intValue()
:
int value = ((Number) jObj.get("x")).intValue();
Вы можете даже сделать все это в одной строке, но это уродливо:
[ 1117] [тысяча сто тридцать два]
При пользовании библиотекой Apache DbUtils можно легко возвратить ResultSet как Список Карт.
public List query(String query) {
List result = null;
try {
QueryRunner qrun = new QueryRunner();
result = (List) qrun.query(connection, query, new MapListHandler());
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
Поместите код в метод. Очень просто назвать методы...
Первое, что пришло на ум:
public static List<Integer> readInts(
PreparedStatement statement
) throws SQLException {
ResultSet results = statement.executeQuery();
try {
assert results.getMetaData().getColumnCount() == 1;
List<Integer> ints = new ArrayList<Integer>();
while (results.next()) {
ints.add(Integer.valueOf(results.getInt(1)));
}
return ints;
} finally {
results.close();
}
}
Затем просто назовите его как:
List<Integer> ids = readInts(myStatemnet);
Готово.
Если Вашей проблемой является низкая производительность, настройте оператор прежде, чем выполнить ее с
java.sql.Statement.setFetchSize(int)
Эксперимент с 100, 1000, 10000.. Это избежит ненужных распространений в прямом и обратном направлениях, которые могут быть причиной замедления, которое Вы упомянули.
Кроме того, ArrayList.add () может быть медленным, если он должен много раз изменять размер внутреннего массива, поскольку он создает новый массив и копирует все данные в там. Попробуйте LinkedList вместо этого.