Не удается прочитать файл JSON в Java - PullRequest
0 голосов
/ 10 мая 2019

Я использую Eclipse для чтения jsonfile. Я поместил jsonfile в мой src-> main-> java-> testjson-> jsonfile.json. Сейчас я пытаюсь прочитать jsonfile. Но моя программа не может найти файл. Я получаю вывод «ничего». Вот код, который я уже реализую:

JsonParser parser = new JSONParser();
try{

Object obj = parser.parse(new FileReader("jsonfile.json"));
JSONObject jsonObject = (JSONObject) obj;
String name = (String) jsonObject.get("name");

}

catch(Exception e){
System.out.println("nothing");
}

Ответы [ 3 ]

1 голос
/ 10 мая 2019

Ваш файл в проекте называется «ресурсом», который будет объединен в результирующий jar -файл.

В maven проектах такие файлы находятся в специальной папке resources (например, src/main/resources/testjson/jsonfile.json), во многих других типах проектов эти файлы расположены непосредственно под java файлами.

Поэтому вы не можете прочитать его с помощью FileReader, поскольку он не будет обычным файлом, а будет заархивирован внутри файла jar.

Все, что вам нужно сделать, это прочитать файл с this.getClass().getResourceAsStream("/testjson/jsonfile.json").

Ваш анализатор должен быть способен читать с InputStream вместо Reader. Если нет, используйте InputStreamReader с правильной кодировкой (JSON-файлы должны быть в формате UTF-8, но это зависит ...)

код:

 try (InputStream is = this.getClass().getResourceAsStream("/testjson/jsonfile.json"); ) {
     Object obj = parser.parse(is); 
 } catch (Exception ex) {
     System.out.println("failed to read: "+ex.getMessage());
 }

Код, если парсер не поддерживает InputStream:

 try (InputStream is = this.getClass().getResourceAsStream("/testjson/jsonfile.json"); 
     Reader rd = new InputStreamReader(is, "UTF-8"); ) {
     Object obj = parser.parse(rd); 
 } catch (Exception ex) {
     System.out.println("failed to read: "+ex.getMessage());
 }
1 голос
/ 10 мая 2019

Поскольку вы говорите, что используете Eclipse, я предполагаю, что вы также запускаете свой код через Eclipse.По умолчанию рабочим каталогом при выполнении Java-программы в Eclipse является корневая папка проекта.Поэтому я предлагаю поместить ваш jsonfile.json в корневую папку вашего проекта вместо src/main/....

Кроме того, вы не должны ловить Exception.Поймайте более конкретный код, например IOException или JSONException, а затем распечатайте сообщение об исключении (e.getMessage()), тогда решить проблему будет намного проще.

0 голосов
/ 10 мая 2019

Укажите полный путь к файлу JSON вместо имени файла.

Если путь к файлу - home / src / main / java / testjson / jsonfile.json

String path = "home/src/main/java/testjson/jsonfile.json";
Object obj = parser.parse(new FileReader(path));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...