@vitya_brodov
Студент 1-го курса

Зачем 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
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
Erik_Mironov
@Erik_Mironov
Зачем считывать файл через 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-переменную.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
The AnyLogic Company Санкт-Петербург
от 180 000 ₽
Emphasoft Санкт-Петербург
от 200 000 до 400 000 ₽
НТВ Москва
от 200 000 ₽