JSON
Некоторые возможности могут присутствовать в одном продукте, но не другие из-за расписаний развертывания и возможностей для конкретного узла.
Поддерживаемые возможности
Загрузка локального JSON-файла из Power Query Desktop
Чтобы загрузить локальный JSON-файл, выполните приведенные действия.

- Выберите параметр JSON в выборе «Получить данные«. Этот выбор запускает локальный браузер файлов, где можно выбрать JSON-файл.
- Чтобы открыть файл, выберите Открыть.
Загрузка JSON-файла автоматически запустит редактор Power Query. Power Query использует автоматическое обнаружение таблиц для плавного выравнивания данных JSON в таблицу. В редакторе можно продолжить преобразование данных, если хотите, или просто закрыть и применить. Дополнительные сведения: автоматическое обнаружение таблиц из JSON-файлов

Загрузка локального JSON-файла из Power Query Online
Чтобы загрузить локальный JSON-файл, выполните приведенные действия.

- На странице источников данных выберите JSON.
- Введите путь к локальному JSON-файлу.
- Выберите локальный шлюз данных из шлюза данных.
- Если требуется проверка подлинности, введите свои учетные данные.
- Выберите Далее.
Загрузка JSON-файла автоматически запустит редактор Power Query. Power Query использует автоматическое обнаружение таблиц для плавного выравнивания данных JSON в таблицу. В редакторе можно продолжить преобразование данных, если требуется, или просто сохранить и закрыть для загрузки данных. Дополнительные сведения: автоматическое обнаружение таблиц из JSON-файлов

Загрузка из Интернета
Чтобы загрузить JSON-файл из Интернета, выберите веб-соединитель, введите веб-адрес файла и следуйте любым запросам учетных данных.
Автоматическое обнаружение таблиц из JSON-файлов
Импорт данных из JSON-файлов (или веб-API) может быть сложным для конечных пользователей. Ниже приведен пример JSON-файла с несколькими уровнями вложенных данных.

При добавлении возможностей автоматического обнаружения таблиц с помощью соединителя JSON в Power Query будут автоматически применяться шаги преобразования для выравнивания данных JSON в таблицу. Ранее пользователям приходилось добавлять записи и списки вручную.

Устранение неполадок
Если отображается следующее сообщение, это может быть связано с недопустимым файлом, например, это не json-файл или неправильный формат. Или вы можете попытаться загрузить JSON-файл Строк.

Если вы пытаетесь загрузить файл строк JSON, следующий пример кода M преобразует все входные данные строк JSON в одну плоскую таблицу автоматически:
let // Read the file into a list of lines Source = Table.FromColumns(), // Transform each line using Json.Document #"Transformed Column" = Table.TransformColumns(Source, ) in #"Transformed Column"
Затем необходимо использовать операцию «Развернуть«, чтобы объединить линии вместе.
JSON к XLS конвертер
Конвертируйте JSON к XLS онлайн с любого устройства с помощью бесплатного конвертера.
О приложении «Конверсия»
Конвертируйте файлы JSON онлайн. Вы можете конвертировать документы JSON с любой платформы (Windows, Linux, macOS). Никакой регистрации не требуется. Просто перетащите файл JSON в форму загрузки, выберите желаемый выходной формат и нажмите кнопку конвертировать. После завершения преобразования вы сможете загрузить файл XLS.
Вы даже можете выполнять более сложные преобразования. Например, вы можете конвертировать документы, защищенные паролем. Просто разверните LoadOptions и введите пароль вашего файла. Или вы можете добавить водяной знак в преобразованный файл XLS. Разверните ConvertOptions и заполните поля для водяных знаков.
Вы можете конвертировать документы JSON где угодно, с любого компьютера или даже с мобильного устройства. Конвертер JSON всегда доступен в Интернете и совершенно бесплатен.
- Конвертировать WORD к PDF, EXCEL к PDF, PDF к WORD, POWERPOINT к IMAGE, VSDX к PDF, HTML к DOCX,EPUB к PDF, RTF к DOCX, XPS к PDF, ODT к DOCX, ODP к PPTX и многие другие форматы документов
- Простой способ мгновенной конвертации JSON к XLS
- Конвертируйте JSON откуда угодно – он работает на всех платформах, включая Windows, MacOS, Android и iOS.
Как открыть json файл в виде таблицы
Смотрю англоязычный видос там человек открывает json из меню
Данные -> Создать запрос ->из файла -> файл Json
а у меня в меню из файла нет подменю «файл Json»
Подскажите пожалуйста, какие предустановки должны быть у excel 2016 для открытия json файла?
Изменено: jonik38 — 17.02.2018 16:25:03
Пользователь
Сообщений: 14669 Регистрация: 15.09.2012
Профессиональная разработка приложений для MS Office
17.02.2018 16:25:47
Если у Вас нормальный 2016, то на вкладке Данные должна быть группа «Получить и преобразовать данные»(она относится к PowerQuery). Там надо выбрать «получить данные» -Из файла -и уже там есть JSON.
Изменено: Дмитрий Щербаков — 17.02.2018 16:26:01
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы.
Пользователь
Сообщений: 10 Регистрация: 14.02.2018
19.02.2018 11:04:49
Респект! Спасибо!
Пользователь
Сообщений: 15 Регистрация: 04.07.2018
04.07.2018 11:29:17
Скрытый текст
Прикрепленные файлы
- Ex_vid.png (104.64 КБ)
- exc.png (17.65 КБ)
Пользователь
Сообщений: 6602 Регистрация: 22.02.2017
Excel x64 О365 / 2016 / Online / Power BI
04.07.2018 13:27:42
У меня такой кнопки, отродясь не было. Наверное нужно поставить крайние обновления.
А если уж нужно открыть, то вот пример использования функции Json.Document от MS без кнопки.
Вот горшок пустой, он предмет простой.
Пользователь
Сообщений: 11907 Регистрация: 22.12.2012
Excel 2016, 365
04.07.2018 13:45:45
Доброе время суток
| Цитата |
|---|
| PooHkrd написал: Json.Document |
Да проще всё. Выбираем из текстового файла. В окне выбора файла выбирает тип Все файлы *.*, указываем нужный json файл. Power Query сам подхватит по расширению файл нужной функцией.
Пользователь
Сообщений: 6602 Регистрация: 22.02.2017
Excel x64 О365 / 2016 / Online / Power BI
04.07.2018 14:05:16
О как! Не знал, спасибо.
Вот горшок пустой, он предмет простой.
Пользователь
Сообщений: 8 Регистрация: 27.02.2019
27.10.2022 10:15:20
Здравствуйте! У меня офис 2013, в excel в пункте меню «power query» есть вкладка «из файла», где можно выбрать: из excel, из текстового или CSV-файла, из XML, из папки. Варианта «из json» нет. Пробую выбрать из текстового файла, как советовали выше, выходит сообщение об ошибке «в конце входного json-файла были обнаружены лишние символы». В окне этого сообщения есть кнопка «изменить», при нажатии на которую выходит окно, где указан путь к файлу, который можно изменить, а также «открыть файл как», где можно выбрать json, текстовый файл и пр., а также книга excel. Выбираю «книга excel», выходит сообщение об ошибке внешняя таблица не имеет предполагаемый формат».
Как мне открыть json в excel в табличном формате? Извините за сумбурное описание, я вообще не понимаю, что такое json и зачем он нужен
Работа с файлами в формате JSON#
JSON (JavaScript Object Notation) — это текстовый формат для хранения и обмена данными.
JSON по синтаксису очень похож на Python и достаточно удобен для восприятия.
Как и в случае с CSV, в Python есть модуль, который позволяет легко записывать и читать данные в формате JSON.
Чтение#
"access": [ "switchport mode access", "switchport access vlan", "switchport nonegotiate", "spanning-tree portfast", "spanning-tree bpduguard enable" ], "trunk": [ "switchport trunk encapsulation dot1q", "switchport mode trunk", "switchport trunk native vlan 999", "switchport trunk allowed vlan" ] >
Для чтения в модуле json есть два метода:
- json.load — метод считывает файл в формате JSON и возвращает объекты Python
- json.loads — метод считывает строку в формате JSON и возвращает объекты Python
json.load #
Чтение файла в формате JSON в объект Python (файл json_read_load.py):
import json with open('sw_templates.json') as f: templates = json.load(f) print(templates) for section, commands in templates.items(): print(section) print('\n'.join(commands))
Вывод будет таким:
$ python json_read_load.py access switchport mode access switchport access vlan switchport nonegotiate spanning-tree portfast spanning-tree bpduguard enable trunk switchport trunk encapsulation dot1q switchport mode trunk switchport trunk native vlan 999 switchport trunk allowed vlan
json.loads #
Считывание строки в формате JSON в объект Python (файл json_read_loads.py):
import json with open('sw_templates.json') as f: file_content = f.read() templates = json.loads(file_content) print(templates) for section, commands in templates.items(): print(section) print('\n'.join(commands))
Результат будет аналогичен предыдущему выводу.
Запись#
Запись файла в формате JSON также осуществляется достаточно легко.
Для записи информации в формате JSON в модуле json также два метода:
- json.dump — метод записывает объект Python в файл в формате JSON
- json.dumps — метод возвращает строку в формате JSON
json.dumps #
Преобразование объекта в строку в формате JSON (json_write_dumps.py):
import json trunk_template = [ 'switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan' ] access_template = [ 'switchport mode access', 'switchport access vlan', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable' ] to_json = 'trunk': trunk_template, 'access': access_template> with open('sw_templates.json', 'w') as f: f.write(json.dumps(to_json)) with open('sw_templates.json') as f: print(f.read())
Метод json.dumps подходит для ситуаций, когда надо вернуть строку в формате JSON. Например, чтобы передать ее API.
json.dump #
Запись объекта Python в файл в формате JSON (файл json_write_dump.py):
import json trunk_template = [ 'switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan' ] access_template = [ 'switchport mode access', 'switchport access vlan', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable' ] to_json = 'trunk': trunk_template, 'access': access_template> with open('sw_templates.json', 'w') as f: json.dump(to_json, f) with open('sw_templates.json') as f: print(f.read())
Когда нужно записать информацию в формате JSON в файл, лучше использовать метод dump.
Дополнительные параметры методов записи#
Методам dump и dumps можно передавать дополнительные параметры для управления форматом вывода.
По умолчанию эти методы записывают информацию в компактном представлении. Как правило, когда данные используются другими программами, визуальное представление данных не важно. Если же данные в файле нужно будет считать человеку, такой формат не очень удобно воспринимать.
К счастью, модуль json позволяет управлять подобными вещами.
Передав дополнительные параметры методу dump (или методу dumps), можно получить более удобный для чтения вывод (файл json_write_indent.py):
import json trunk_template = [ 'switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan' ] access_template = [ 'switchport mode access', 'switchport access vlan', 'switchport nonegotiate', 'spanning-tree portfast', 'spanning-tree bpduguard enable' ] to_json = 'trunk': trunk_template, 'access': access_template> with open('sw_templates.json', 'w') as f: json.dump(to_json, f, sort_keys=True, indent=2) with open('sw_templates.json') as f: print(f.read())
Теперь содержимое файла sw_templates.json выглядит так:
"access": [ "switchport mode access", "switchport access vlan", "switchport nonegotiate", "spanning-tree portfast", "spanning-tree bpduguard enable" ], "trunk": [ "switchport trunk encapsulation dot1q", "switchport mode trunk", "switchport trunk native vlan 999", "switchport trunk allowed vlan" ] >
Изменение типа данных#
Еще один важный аспект преобразования данных в формат JSON: данные не всегда будут того же типа, что исходные данные в Python.
Например, кортежи при записи в JSON превращаются в списки:
In [1]: import json In [2]: trunk_template = ('switchport trunk encapsulation dot1q', . 'switchport mode trunk', . 'switchport trunk native vlan 999', . 'switchport trunk allowed vlan') In [3]: print(type(trunk_template)) In [4]: with open('trunk_template.json', 'w') as f: . json.dump(trunk_template, f, sort_keys=True, indent=2) . In [5]: cat trunk_template.json [ "switchport trunk encapsulation dot1q", "switchport mode trunk", "switchport trunk native vlan 999", "switchport trunk allowed vlan" ] In [6]: templates = json.load(open('trunk_template.json')) In [7]: type(templates) Out[7]: list In [8]: print(templates) ['switchport trunk encapsulation dot1q', 'switchport mode trunk', 'switchport trunk native vlan 999', 'switchport trunk allowed vlan']
Так происходит из-за того, что в JSON используются другие типы данных и не для всех типов данных Python есть соответствия.
Таблица конвертации данных Python в JSON: