Как создать файл json

Обновлено: 21.11.2024

Если вы хотите хранить данные между перезапусками сервера с помощью Node, файлы JSON — это простой и удобный выбор. Независимо от того, читаете ли вы файл конфигурации или сохраняете данные для своего приложения, в Node есть несколько встроенных утилит, упрощающих чтение и запись файлов JSON. Использование файлов JSON в вашем приложении может быть полезным способом сохранения данных. Мы рассмотрим несколько различных методов работы с файлами JSON.

В этом уроке мы:

  • Чтение данных JSON с диска
  • Научитесь использовать модуль fs для взаимодействия с файловой системой
  • Сохранение данных в файле JSON
  • Используйте JSON.parse и JSON.stringify для преобразования данных в формат JSON и из него.

К концу этого руководства вы сможете работать с файлами JSON с помощью встроенного в Node модуля fs.

Допустим, у вас есть файл customer.json, сохраненный на диске, который содержит запись о покупателе в вашем магазине.

В приложении для магазина вы хотите получить доступ к адресу покупателя, а затем обновить количество заказов после размещения заказа.

В этом руководстве мы рассмотрим, как читать и записывать в наш файл customer.json.

Предпосылки

Наблюдение: чтение/запись файлов JSON

Взаимодействовать с файлами с помощью fs

Доступ к файлам в Node осуществляется с помощью встроенного модуля fs, который дает вам функции для просмотра, чтения и записи файлов, а также многие другие инструменты для работы с файловой системой. Поскольку это нативный модуль, мы можем потребовать его в нашем коде, не устанавливая его. Просто вызовите const fs = require(‘fs’) .

Модуль fs дает нам возможность синхронной или асинхронной версии многих своих функций. Синхронные версии блокируют выполнение другого кода до тех пор, пока они не закончат доступ к файловой системе, чтение или запись данных. Асинхронная функция будет работать без блокировки другого кода. Узнайте больше о поведении синхронизации/асинхронности.

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

Для асинхронного чтения и записи файлов с помощью fs мы будем использовать fs.readFile и fs.writeFile .

Мы также будем использовать глобальный помощник JSON для преобразования объектов в строки JSON и строк JSON в объекты.

Чтение файла JSON

Самый простой способ прочитать файл JSON — потребовать его. Передача require() с путем к файлу JSON приведет к синхронному чтению и анализу данных в объект JavaScript.

Но чтение файлов JSON с помощью require имеет свои недостатки. Файл будет прочитан только один раз; требуя, чтобы он снова возвращал кэшированные данные из первого запуска запроса. Это нормально для загрузки статических данных при запуске (например, данных конфигурации). Но для чтения файла, который изменяется на диске, как это может сделать наш customer.json, нам нужно вручную прочитать файл с помощью асинхронного fs.readFile .

Чтение файла с помощью fs.readFile

Чтобы получить доступ к адресу клиента, нам необходимо:

  • Чтение данных JSON из файла
  • Синтаксический анализ строки JSON в объект JavaScript

Чтобы загрузить данные из файла customer.json, мы будем использовать fs.readFile , передав ему путь к нашему файлу, необязательный тип кодировки и обратный вызов для получения данных файла.< /p>

Если файл успешно прочитан, его содержимое будет передано обратному вызову.

  • ./customer.json — относительный путь к файлу. utf8 — необязательный параметр для кодировки читаемого файла, его можно не указывать. Если не указано, функция вернет буфер вместо строки.
  • (err, jsonString) =><> – это функция обратного вызова, которая запускается после прочтения файла.

Теперь у нас есть содержимое файла в виде строки JSON, но нам нужно преобразовать строку в объект.

Прежде чем мы сможем использовать данные обратного вызова в нашем коде, мы должны превратить их в объект. JSON.parse принимает данные JSON в качестве входных данных и возвращает новый объект JavaScript. В противном случае у нас была бы просто строка данных со свойствами, к которым у нас нет доступа.

JSON.parse может вызвать ошибки исключения и привести к сбою нашей программы, если будет передана недопустимая строка JSON. Чтобы предотвратить сбой, мы заключаем JSON.parse в инструкцию try catch, чтобы изящно перехватывать любые ошибки.

В этом примере показано чтение и анализ файла JSON:

Используя jsonString из чтения customer.json, мы создаем объект и можем получить доступ к свойству адреса. Если JSON.parse выдает ошибку, мы обрабатываем ее в блоке catch.

Теперь у нас есть объектное представление данных в нашем файле customer.json!

Мы также можем читать файл синхронно, используя fs.чтениеФайлСинк. Вместо обратного вызова readFileSync возвращает содержимое файла после его чтения.

Мы можем использовать эти знания для создания многоразовой вспомогательной функции для чтения и анализа файла JSON. Здесь мы создаем функцию с именем jsonReader, которая будет читать и анализировать файл JSON для нас. Он принимает путь к файлу и обратный вызов для получения проанализированного объекта и любых ошибок. Он улавливает любые ошибки, выдаваемые JSON.parse.

Примечание о кодировке файлов

И fs.readFileSync, и fs.readFile принимают необязательный аргумент кодировки. Если вы укажете кодировку символов, вы получите строку в ответ. Если вы не укажете кодировку символов, обе функции вернут Buffer .

Это связано с тем, что Node не предполагает и не может предполагать, какой контент содержит файл. Даже если ты можешь. Чтобы справиться с этим отсутствием определений, Node будет читать файл побайтно и возвращать его в виде произвольного буфера, который вы можете обрабатывать по своему усмотрению.

Если вы знаете содержимое файла и можете предоставить эту информацию Node в виде аргумента кодирования, это обычно делает код более производительным и более понятным.

Запись в файл с помощью fs.writeFile

Запись JSON в файловую систему аналогична ее чтению. Мы будем использовать fs.writeFile для асинхронной записи данных в файл newCustomer.json.

Во-первых, чтобы записать данные в файл JSON, мы должны создать строку данных JSON с помощью JSON.stringify . Это возвращает строковое представление JSON объекта JavaScript, которое можно записать в файл. Подобно анализу данных в объект при чтении файла, мы должны преобразовать наши данные в строку, чтобы иметь возможность записать их в файл.

Создайте объект клиента с нашими данными ниже и превратите его в строку.

Примечание. Если вы попытаетесь записать объект в файл без его строки, ваш файл будет пустым и будет выглядеть следующим образом:

После преобразования данных в строку мы можем использовать fs.writeFile для создания нового файла клиента. Мы передаем fs.writeFile путь к файлу, данные клиента для записи и обратный вызов, который будет выполнен после записи файла. Если файл newCustomer.json еще не существует, он будет создан; если он существует, он будет перезаписан!

Вот пример записи файла JSON с помощью fs.writeFile

И все! После запуска обратного вызова файл будет записан на диск. Примечание: нам передается только объект ошибки; данные файла, которые мы написали, не передаются обратному вызову. Мы также можем синхронно записать файл таким же образом, используя fs.writeFileSync :

После того, как ваш файл будет готов, он будет выглядеть примерно так:

Структура по умолчанию помещает все ваши данные в одну строку. При желании вы можете сделать выходной файл удобочитаемым для человека, передав количество пробелов для отступа в JSON.stringify :

Выше мы указали stringify отступ данных с двумя пробелами. Теперь ваш выходной файл должен выглядеть так:

Обновить файл JSON

Теперь, когда мы можем читать и записывать файлы наших клиентов, мы можем использовать их как простую базу данных. Если мы хотим обновить данные в файле JSON, мы можем прочитать содержимое, изменить данные, а затем записать новые данные обратно в файл:

Определенно не самая эффективная база данных, которую вы могли бы выбрать, но такая работа с файлами JSON — это простой способ сохранить данные в вашем проекте.

Подведение итогов

JSON — это один из наиболее распространенных типов данных, с которыми вы будете работать в Node, и возможность чтения и записи файлов JSON очень полезна. Вы узнали, как использовать fs.readFile и fs.writeFile для асинхронной работы с файловой системой, а также как анализировать данные в формате JSON и из него, а также выявлять ошибки из JSON.parse .

Вы можете использовать требование чтения файла JSON при запуске для синхронного анализа файла JSON в одной строке. И теперь вы можете использовать простой файл JSON в качестве хранилища данных.

Если вы хотите узнать больше, вы можете прочитать, что такое JSON на самом деле, и узнать больше о синхронном и асинхронном коде.

Дальнейшее понимание

  • Узнайте, как использовать Node.js Streams для чтения очень больших файлов.
  • Рассмотрите этот пример вместе с коллегой. Все ли понятия вам понятны? Вам нужно что-то проверить?

Дополнительные ресурсы

Войдите в свою учетную запись Osio Labs
, чтобы получить мгновенный доступ ко всей нашей библиотеке.

Обозначение объектов JavaScript (JSON) – это стандартный текстовый формат для представления структурированных данных на основе синтаксиса объектов JavaScript. Он обычно используется для передачи данных в веб-приложениях (например, для отправки некоторых данных с сервера клиенту, чтобы их можно было отобразить на веб-странице, или наоборот). Вы будете сталкиваться с этим довольно часто, поэтому в этой статье мы даем вам все необходимое для работы с JSON с помощью JavaScript, включая синтаксический анализ JSON, чтобы вы могли получить доступ к данным в нем, и создание JSON.

Требования: Базовая компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Стандартные блоки) и основы OOJS (см. Введение в объекты).
Цель: Понять, как работать с данными, хранящимися в JSON, и создавать свои собственные строки JSON.

Нет, правда, что такое JSON?

JSON – это текстовый формат данных, основанный на синтаксисе объектов JavaScript, который популяризировал Дуглас Крокфорд. Несмотря на то, что он очень похож на синтаксис литерала объекта JavaScript, его можно использовать независимо от JavaScript, и многие среды программирования позволяют читать (анализировать) и генерировать JSON.

JSON существует в виде строки — это удобно, когда вы хотите передавать данные по сети. Его необходимо преобразовать в собственный объект JavaScript, когда вы хотите получить доступ к данным. Это не большая проблема — JavaScript предоставляет глобальный объект JSON с методами, доступными для преобразования между ними.

Примечание. Преобразование строки в собственный объект называется десериализацией, а преобразование собственного объекта в строку для передачи по сети называется сериализацией.

Строка JSON может храниться в отдельном файле, который по сути представляет собой просто текстовый файл с расширением .json и типом MIME application/json .

Структура JSON

Как описано выше, JSON — это строка, формат которой очень напоминает литеральный формат объекта JavaScript. Вы можете включать в JSON те же базовые типы данных, что и в стандартный объект JavaScript — строки, числа, массивы, логические значения и другие литералы объектов. Это позволяет вам построить иерархию данных, например:

Если бы мы загрузили эту строку в программу JavaScript, проанализировав ее, например, в переменную с именем superHeroes, мы могли бы затем получить доступ к данным внутри нее, используя ту же нотацию с точками и квадратными скобками, которую мы рассматривали в статье об основах объектов JavaScript. Например:

Чтобы получить доступ к данным ниже по иерархии, вы должны связать имена требуемых свойств и индексы массива вместе. Например, чтобы получить доступ к третьей сверхспособности второго героя, указанного в списке участников, вы должны сделать следующее:

  1. Сначала у нас есть имя переменной — superHeroes.
  2. Внутри этого мы хотим получить доступ к свойству Members, поэтому мы используем ["members"] .
  3. members содержит массив, заполненный объектами. Мы хотим получить доступ ко второму объекту внутри массива, поэтому используем [1].
  4. Внутри этого объекта мы хотим получить доступ к свойству полномочий, поэтому используем ["powers"] .
  5. Внутри свойства power находится массив, содержащий суперспособности выбранного героя. Нам нужен третий, поэтому мы используем [2].

Примечание. Мы сделали JSON, показанный выше, доступным внутри переменной в нашем примере JSONTest.html (см. исходный код). Попробуйте загрузить это, а затем получить доступ к данным внутри переменной через консоль JavaScript вашего браузера.

Массивы в формате JSON

Выше мы упомянули, что текст JSON в основном выглядит как объект JavaScript внутри строки. Мы также можем конвертировать массивы в/из JSON. Ниже также допустим JSON, например:

Приведенное выше является абсолютно допустимым JSON. Вам просто нужно получить доступ к элементам массива (в его проанализированной версии), начав с индекса массива, например [0]["powers"][0] .

Другие примечания

  • JSON — это просто строка с указанным форматом данных — она содержит только свойства, а не методы.
  • JSON требует использования двойных кавычек вокруг строк и имен свойств. Одинарные кавычки недопустимы, кроме как заключать в них всю строку JSON.
  • Даже одна неуместная запятая или двоеточие могут привести к неправильной работе JSON-файла. Вы должны быть осторожны при проверке любых данных, которые вы пытаетесь использовать (хотя сгенерированный компьютером JSON с меньшей вероятностью будет содержать ошибки, если программа-генератор работает правильно). Вы можете проверить JSON с помощью такого приложения, как JSONLint.
  • JSON фактически может принимать форму любого типа данных, допустимого для включения в JSON, а не только массивы или объекты. Так, например, одна строка или число будут действительными JSON.
  • В отличие от кода JavaScript, в котором свойства объектов могут быть не заключены в кавычки, в JSON в качестве свойств могут использоваться только строки в кавычках.

Активное обучение: работа с примером JSON

Итак, давайте рассмотрим пример, чтобы показать, как мы можем использовать некоторые данные в формате JSON на веб-сайте.

Начало работы

Для начала сделайте локальные копии файлов hero.html и style.css. Последний содержит простой CSS для оформления нашей страницы, а первый содержит очень простой HTML-код тела, а также элемент, содержащий код JavaScript, который мы напишем в этом упражнении:

Мы собираемся загрузить JSON в наш скрипт и использовать некоторые изящные манипуляции с DOM, чтобы отобразить его, например:

Функция верхнего уровня

Функция верхнего уровня выглядит следующим образом:

Чтобы получить JSON, мы используем API под названием Fetch. Этот API позволяет нам отправлять сетевые запросы на получение ресурсов с сервера через JavaScript (например, изображения, текст, JSON и даже фрагменты HTML), что означает, что мы можем обновлять небольшие разделы контента без перезагрузки всей страницы.

В нашей функции первые четыре строки используют Fetch API для получения JSON с сервера:

  • мы объявляем переменную requestURL для хранения URL GitHub
  • мы используем URL-адрес для инициализации нового объекта Request.
  • мы делаем сетевой запрос с помощью функции fetch(), и это возвращает объект Response
  • мы получаем ответ в формате JSON, используя функцию json() объекта Response.

Примечание. API fetch() является асинхронным. Мы многое узнаем об асинхронных функциях в следующем модуле, а пока просто скажем, что нам нужно добавить ключевое слово async перед названием функции, использующей fetch API, и добавить ключевое слово await перед вызовами. к любым асинхронным функциям.

После этого переменная superHeroes будет содержать объект JavaScript на основе JSON. Затем мы передаем этот объект двум вызовам функций — первый заполняет корректными данными, а второй создает информационную карточку для каждого героя в команде и вставляет ее в .

Заполнение заголовка

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

Здесь мы сначала создаем элемент с помощью createElement() , устанавливаем его textContent равным свойству отрядаName объекта, а затем добавляем его к заголовку с помощью appendChild() . Затем мы проделываем очень похожую операцию с абзацем: создаем его, устанавливаем его текстовое содержимое и добавляем к заголовку. Единственное отличие состоит в том, что для его текста задан литерал шаблона, содержащий как свойства homeTown, так и сформированные свойства объекта.

Создание информационных карточек героев

Затем добавьте в конец кода следующую функцию, которая создает и отображает карты супергероев:

Для начала мы сохраняем свойство member объекта JavaScript в новой переменной. Этот массив содержит несколько объектов, содержащих информацию о каждом герое.

Далее мы используем for. цикла для перебора каждого объекта в массиве. Для каждого из них мы:

  1. Создайте несколько новых элементов: , , три

    и .

  2. Установите, чтобы оно содержало имя текущего героя .
  3. Заполните три абзаца их секретным идентификатором, возрастом и строкой "Сверхспособности:", чтобы представить информацию в списке.
  4. Сохраните свойство powers в другой новой константе superPowers, которая содержит массив со списком суперспособностей текущего героя.
  5. Используйте другой для. цикла для перебора суперспособностей текущего героя — для каждой из них мы создаем
  6. элемент, поместите в него суперсилу, затем поместите listItem в элемент ( myList ) с помощью appendChild() .
  7. Последнее, что мы делаем, — добавляем ,

    s и внутри ( myArticle ), затем добавьте внутри . Порядок, в котором элементы добавляются, важен, так как именно в этом порядке они будут отображаться внутри HTML.

  8. Примечание. Если у вас возникли проблемы с запуском примера, попробуйте обратиться к нашему исходному коду hero-finished.html (также посмотрите, как он работает в реальном времени).

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

    Вызов функции верхнего уровня

    Наконец, нам нужно вызвать нашу функцию populate() верхнего уровня:

    Преобразование между объектами и текстом

    Вышеприведенный пример был простым с точки зрения доступа к объекту JavaScript, поскольку мы преобразовали сетевой ответ непосредственно в объект JavaScript с помощью response.json() .

    Но иногда нам не так везет — иногда мы получаем необработанную строку JSON, и нам нужно самим преобразовать ее в объект. И когда мы хотим отправить объект JavaScript по сети, нам нужно преобразовать его в JSON (строку) перед отправкой. К счастью, эти две проблемы настолько распространены в веб-разработке, что в браузерах доступен встроенный объект JSON, который содержит следующие два метода:

      : принимает строку JSON в качестве параметра и возвращает соответствующий объект JavaScript.: принимает объект в качестве параметра и возвращает эквивалентную строку JSON.

    Вы можете увидеть первый из них в действии в нашем примере hero-finished-json-parse.html (см. исходный код) — он делает то же самое, что и пример, который мы создали ранее, за исключением того, что:

    • мы получаем ответ в виде текста, а не JSON, вызывая метод ответа text()
    • затем мы используем функцию parse() для преобразования текста в объект JavaScript.

    Как вы могли догадаться, stringify() работает наоборот. Попробуйте ввести следующие строки в консоль JavaScript вашего браузера одну за другой, чтобы увидеть ее в действии:

    Здесь мы создаем объект JavaScript, затем проверяем, что он содержит, затем преобразуем его в строку JSON с помощью stringify() — сохраняем возвращаемое значение в новой переменной — и снова проверяем его.

    Проверьте свои навыки!

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

    Обзор

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

    JSON стал стандартом де-факто для обмена данными между клиентом и сервером. Python имеет встроенный пакет json для кодирования и декодирования данных JSON. Чтобы читать и записывать данные json, мы должны использовать пакет json. Для обработки файлов Python предоставляет множество функций, которые сделают эту работу.

    Как создать файл JSON в Python

    Чтобы создать файл json в Python, используйте функцию open(). Функция open() принимает в качестве аргумента имя файла и режим. Если файла нет, то он будет создан.

    Python With Statement используется для открытия файлов. Оператор with рекомендуется для работы с файлами, поскольку он гарантирует, что дескрипторы открытых файлов будут автоматически закрыты после того, как выполнение программы выйдет из контекста оператора with.

    В этом коде мы пытаемся открыть файл с именем new_file.json в режиме w. Однако файл не существует в файловой системе, поэтому в той же папке создается новый файл.

    Создайте файл json из существующего файла json в Python

    Чтобы создать файл json из существующего файла json, откройте существующий файл в режиме чтения и прочитайте содержимое этого файла, используйте операторы open() и with в режиме записи и выгрузите данные json в новый файл json. .

    Допустим, у нас есть существующий файл data.json.

    Теперь мы создадим новый файл json из этого файла data.json.

    Вывод

    По сути, мы читаем существующий файл json, создаем новый файл json и выгружаем содержимое в этот новый файл.

    Заключение

    С помощью контекстного менеджера Python вы можете создать файл json и открыть его в режиме записи. Файлы JSON удобно заканчиваются расширением .json.

    Для работы с файлами json в Python:

    1. Импортируйте пакет json.
    2. Чтобы прочитать данные, используйте функцию load() или load().
    3. Затем вы обрабатываете данные.
    4. Чтобы изменить данные, используйте функцию dump() или dumps().

    Это не всегда так, но вы, вероятно, будете следовать этим шагам.

    Это все, что нужно для создания файла json в Python.

    Крунал Латия – инженер по информационным технологиям. По профессии он веб-разработчик со знанием нескольких внутренних платформ (например, PHP, Node.js, Python) и интерфейсных сред JavaScript (например, Angular, React и Vue).

    В этом руководстве мы рассмотрим, как читать и записывать данные JSON из файла и в файл в Python с помощью модуля json.

    JSON (JavaScript Object Notation) – чрезвычайно популярный формат для сериализации данных, учитывая его универсальность и легкость, а также удобство для человека. В частности, он широко используется в мире веб-разработки, где вы, вероятно, столкнетесь с сериализованными объектами JSON, отправляемыми из REST API, конфигурацией приложения или даже простым хранилищем данных.

    Учитывая его распространенность, чтение и анализ файлов JSON (или строк) довольно распространены, и запись JSON для отправки не менее распространена. В этом руководстве мы рассмотрим, как использовать модуль json для чтения и записи JSON в Python.

    Запись JSON в файл с помощью Python

    Естественный формат JSON похож на карту в информатике — карту пар ключ-значение. В Python словарь является реализацией карты, поэтому мы, естественно, сможем точно представлять JSON с помощью словаря.

    Словарь может содержать другие вложенные словари, массивы, логические значения или другие примитивные типы, такие как целые числа и строки.

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

    При этом давайте импортируем модуль json, определим словарь с некоторыми данными, а затем преобразуем его в JSON перед сохранением в файл:

    В результате:

    Здесь у нас есть простой словарь с несколькими сотрудниками, у каждого из которых есть имя, отдел и место. Функция dumps() модуля json выгружает словарь в содержимое JSON и возвращает строку JSON.

    После сериализации вы можете решить отправить его в другую службу, которая его десериализует или, скажем, сохранит. Чтобы сохранить эту строку JSON в файле, мы просто откроем файл в режиме записи и запишем его. Если вы не хотите извлекать данные в независимую переменную для последующего использования, а хотите просто выгрузить их в файл, вы можете пропустить функцию dumps() и использовать вместо нее dump():

    Любой файлоподобный объект может быть передан второму аргументу функции dump(), даже если это не настоящий файл. Хорошим примером этого может быть сокет, который можно открывать, закрывать и записывать в него так же, как в файл.

    Чтение JSON из файла с помощью Python

    Сопоставление между содержимым словаря и строкой JSON является простым, поэтому их легко преобразовать. Как и json.dumps(), функция json.loads() принимает строку JSON и преобразует ее в словарь.

    Кроме того, json.load() позволяет загружать файл.

    В результате:

    В качестве альтернативы давайте прочитаем строку JSON в словарь:

    Что также приводит к:

    Это особенно полезно для анализа ответов REST API, которые отправляют JSON. Эти данные поступают к вам в виде строки, которую вы затем можете напрямую передать в json.loads(), и у вас есть гораздо более удобный словарь для работы!

    Параметры

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

    json.dump() / json.dumps() и json.load() / json.loads() предоставляют несколько вариантов форматирования.

    Красивая печать JSON

    Сделать JSON понятным для человека (т. е. "красивая печать") так же просто, как передать целочисленное значение для параметра отступа:

    Бесплатная электронная книга: Git Essentials

    Ознакомьтесь с нашим практическим руководством по изучению Git, включающим передовые практики, общепринятые стандарты и памятку. Перестаньте гуглить команды Git и на самом деле изучите их!

    Это создает гораздо более читаемый вывод с 4 пробелами на каждом отступе:

    Еще один вариант — использовать инструмент командной строки — json.tool . Итак, если вы просто хотите красиво напечатать JSON в командной строке, вы можете сделать что-то вроде этого:

    Сортировка

    Объект JSON — это:

    "Объект представляет собой неупорядоченный набор пар имя/значение."

    Порядок клавиш не гарантируется, но возможно, вам потребуется принудительно применить порядок клавиш. Чтобы добиться упорядочения, вы можете передать значение true для параметра sort_keys при использовании json.dump() или json.dumps():

    В результате:

    Текст ASCII

    По умолчанию json.dump() и json.dumps() гарантируют, что текст в заданном словаре Python будет закодирован в ASCII. Если присутствуют символы, отличные от ASCII, они автоматически экранируются, как показано в следующем примере:

    Это не всегда приемлемо, и во многих случаях вы можете не трогать символы Unicode. Для этого установите для параметра sure_ascii значение False :

    Заключение

    В этом руководстве мы познакомили вас с методами json.dump() , json.dumps() , json.load() и json.loads(), которые помогают сериализовать и десериализовать строки JSON.

    Поскольку JSON является одним из самых популярных способов сериализации структурированных данных, вам, вероятно, придется взаимодействовать с ним довольно часто, особенно при работе с веб-приложениями. Модуль Python json — отличный способ начать работу, хотя вы, вероятно, обнаружите, что simplejson — еще одна отличная альтернатива, гораздо менее строгая в отношении синтаксиса JSON.

    Gson — это библиотека Java, которая позволяет преобразовывать объекты Java в представление JSON. Мы также можем использовать его наоборот, чтобы преобразовать строку JSON в эквивалентный объект Java.

    В этом кратком руководстве мы узнаем, как сохранять различные типы данных Java в формате JSON в файле.

    2. Зависимости Maven

    Прежде всего нам нужно добавить зависимость Gson в pom.xml. Это доступно в Maven Central:

    3. Сохранение данных в файл JSON

    Мы будем использовать метод toJson(Object src, Appendable Writer) из класса Gson для преобразования типа данных Java в JSON и сохранения его в файле. Конструктор Gson() создает объект Gson с конфигурацией по умолчанию:

    Теперь мы можем вызвать toJson() для преобразования и сохранения объектов Java.

    Давайте рассмотрим несколько примеров с различными типами данных в Java.

    3.1. Примитивы

    Сохранение примитивов в файл JSON с помощью GSON довольно просто:

    Здесь filePath обозначает расположение файла. Выходной файл будет просто содержать примитивное значение:

    3.2. Пользовательские объекты

    Точно так же мы можем хранить объекты в формате JSON.

    Сначала мы создадим простой класс User:

    Теперь мы сохраним объект Пользователь как JSON:

    Вывод файла будет таким:

    Если поле помечено как временное, оно по умолчанию игнорируется и не включается в сериализацию или десериализацию JSON. В результате поле национальность отсутствует в выходных данных JSON.

    Кроме того, по умолчанию Gson опускает пустые поля во время сериализации. Итак, если мы рассмотрим этот пример:

    выходной файл будет таким:

    Позже мы увидим, как включать нулевые поля в сериализацию.

    3.3. Коллекции

    Мы можем хранить коллекцию объектов аналогичным образом:

    В этом случае выходной файл будет представлять собой массив объектов Пользователь:

    4. Использование GsonBuilder

    Чтобы настроить параметры конфигурации Gson по умолчанию, мы можем использовать класс GsonBuilder.

    Этот класс следует шаблону компоновщика и обычно используется, сначала вызывая различные методы конфигурации для установки нужных параметров, а затем вызывая метод create():

    Здесь мы устанавливаем параметр красивой печати, который по умолчанию имеет значение false. Точно так же, чтобы включить нулевые значения в сериализацию, мы можем вызвать serializeNulls(). Доступные параметры перечислены здесь.

    5. Заключение

    В этой краткой статье мы поняли, как сериализовать различные типы данных Java в файл JSON. Чтобы изучить различные статьи о JSON, ознакомьтесь с другими нашими руководствами по этой теме.

    Читайте также: