#java #arrays #netbeans #filereader #json-simple
#java #массивы #netbeans #filereader #json-простой
Вопрос:
Я экспортирую некоторые данные в java, используя JSON, затем я считываю эти данные и пытаюсь получить элементы из массива внутри объекта JSON, но у меня возникают проблемы.
Я пробовал много вещей, таких как
jsonObject.get("InGameCord").get("x")
Object Testo = jsonObject.get("InGameCord");
Testo.x
Подобные вещи наряду с другими, которые не сработали, поэтому удалили код.
Это экспортированный файл JSON, и я пытаюсь получить доступ к массиву игровых записей X или Y.
{"BaseID":1,"BaseName":"Bandar-e-Jask Airbase","InGameCord":[{"x":463,"y":451}]}
Вот мой код для чтения файлов
FileReader reader = new FileReader(filename);
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
System.out.println(jsonObject);
System.out.println("BaseName: " jsonObject.get("BaseName"));
System.out.println("BaseID: " jsonObject.get("BaseID"));
System.out.println("InGameCord: " jsonObject.get("InGameCord"));
Все это работает и экспортирует правильную информацию.
Итак, я пытаюсь получить, скажем, значение X для InGameCord.
int X = 463;
Комментарии:
1. Откуда вы получаете объект JSON и анализатор JSON ? Я спрашиваю, потому что спецификация Java EE 8 использует другой регистр для имен интерфейсов:
javax.json.JsonObject
иjavax.json.stream.JsonParser
.2.
import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser;
Ответ №1:
Учитывая ваши данные 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();
Вы даже можете сделать все это в одной строке, но это некрасиво:
int y = ((Number) ((JSONObject) numbers.get(0)).get("y")).intValue();