---
title: Чтение JSON
slug: общие-обмен-данными-чтение-данных-из-файла/чтение-json
---

```bsl

&НаКлиенте
Асинх Процедура ПрочитатьФайл(Команда)
    
    Расширение = "json";

    ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
    ПараметрыДиалога.Заголовок = "Выберите файл";
    ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
    
    ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
    Если ОписаниеФайла = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    АдресДанных = ОписаниеФайла.Адрес;

    Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;

    ПрочитатьФайлНаСервере(АдресДанных, Расширение);

КонецПроцедуры

&НаСервере
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)

    ДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанных);
    ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
    ДанныеФайла.Записать(ПутьКФайлу);
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.ОткрытьФайл(ПутьКФайлу);
    
    ДанныеJSON = ПрочитатьJSON(ЧтениеJSON);
    
    // Получаем массив структур
    Если ТипЗнч(ДанныеJSON) = Тип("Структура") Тогда
        МассивДанных = Новый Массив;
        МассивДанных.Добавить(ДанныеJSON);
    ИначеЕсли ТипЗнч(ДанныеJSON) = Тип("Массив") Тогда
        МассивДанных = ДанныеJSON;
    КонецЕсли;
    
    Для каждого ДанныеКонтрагента Из МассивДанных Цикл
        
        // обрабатываем
        
    КонецЦикла;
    
    ЧтениеJSON.Закрыть();
    
    УдалитьФайлы(ПутьКФайлу);


КонецПроцедуры 
```