vitya_brodov
@vitya_brodov
Java dev

Зачем json считывать через Scanner?

Здравствуйте!
есть метод, который считывает данные из json файла:
Сам я пытался понять зачем так делать, но не получилось.
Вопрос собственно в коментариях кода:
public class JsonReader {
    private final Gson gson = new GsonBuilder().setPrettyPrinting().create();

    public Trucks[] reader(){
        String fromJson = "";
        try (FileReader fileReader = new FileReader("./trucks.json");
                Scanner sc = new Scanner(fileReader))  // Зачем считывать файл через Scanner?
        {
            while (sc.hasNextLine()){ // Зачем использовать цикл? нельзя взять и всю прочитать без цикла?
               fromJson += sc.nextLine(); // Зачем строке происваевать данные файла?
            }
        }catch (IOException exception){
            exception.printStackTrace();
        }
        return gson.fromJson(fromJson, Trucks[].class); // Зачем указывать тип объекта в конце?
    }
}


p.s Буду благодарен если скините полезные ссылки и т.п по json в java
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
Erik_Mironov
@Erik_Mironov
Старые вопросы: *Dies from cringe*
Зачем считывать файл через Scanner?


С помощью класса Scanner вы можете читать данные из файла точно так же, как и с помощью BufferedReader'а, BufferedInputStream'а и других классов, способных читать файловые данные. Почему же здесь использовали Scanner известно только тому, кто написал этот класс, потому что есть более подходящие классы для подобных операций.

Зачем использовать цикл? нельзя взять и всю прочитать без цикла?


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

Зачем строке происваевать данные файла?


В переменной fromJson мы сохраняем прочитанные данные, а поскольку JSON представляет собой обычный набор текста, то использование типа String более чем подходит для этой операции. Вы также можете использовать коллекции или массивы для этого.

Зачем указывать тип объекта в конце?


Метод fromJson десериализует JSON, прочитанный из Reader'а (в данном случае из строки) в объект класса, указанного вторым аргументом.
Ссылочка на спек класса
https://www.javadoc.io/doc/com.google.code.gson/gs...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
JSON - это просто текст. И чтение JSON ничем не отличается от чтения любого текстового файла.
Использование Scanner - один из способов чтения текстового файла. В данном случае, далеко не лучший способ.
Например, здесь https://javadevblog.com/kak-schitat-fajl-v-string-... показаны 4 разных способа прочитать текстовый файл в String-переменную.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы