Python: JSON stringify

Python: Деревья 7 сообщений
Обновлено: 30 марта, 14:05
116
Студентов
78%
Завершения

JavaScript содержит метод JSON.stringify() для приведения к строке любого значения. Он работает следующим образом:

JSON.stringify('hello'); // "hello" - для строковых значений добавляются кавычки
JSON.stringify(true);    // true    - значение приведено к строке, но без кавычек
JSON.stringify(5);       // 5

const data = { hello: 'world', is: true, nested: { count: 5 } };
JSON.stringify(data); // {"hello":"world","is":true,"nested":{"count":5}} 

JSON.stringify(data, null, 2); // null, 2 - указывают на два пробела перед ключом
// ключам добавляются кавычки
// в конце каждой строчки (линии) добавляется запятая, если имеется значение ниже
// {
//   "hello": "world",
//   "is": true,
//   "nested": {
//     "count": 5
//   }
// }

solution.py

Реализуйте функцию stringify(), похожую на JSON.stringify(), но со следующими отличиями:

  • ключи и строковые значения должны быть без кавычек;
  • строчка (линия) в строке заканчивается самим значением, без запятой.

Синтаксис:

stringify(value[, replacer[, spaces_count]])

Параметры:

  • value
    • Значение, преобразуемое в строку.
  • replacer, необязательный
    • Строка – отступ для ключа; Значение по умолчанию – один пробел.
  • spacesCount, необязательный
    • Число – количество повторов отступа ключа. Значение по умолчанию – 1.
from solution import stringify

stringify('hello')  # значение приведено к строке, но не имеет кавычек
# hello
stringify(True)
# True
stringify(5)
# 5

data = { "hello": "world", "is": True, "nested": { "count": 5 } }
stringify(data)  # то же самое что stringify(data, ' ', 1)
# {
#   hello: world
#   is: True
#   nested: {
#    count: 5
#   }
# }
stringify(data, '|-', 2)  # символ, переданный вторым аргументом повторяется столько раз, сколько указано третьим аргументом
# {
# |-|-hello: world
# |-|-is: True
# |-|-nested: {
# |-|-|-|-count: 5
# |-|-}
# }

Подсказки

  • чтобы лучше понять как работает JSON.stringify(), запускайте его с разными данными и параметрами в консоли браузера.
  • проверки в тестах идут от простого к сложному:

    • проверка на примитивных типах;
    • проверка на "плоских" данных;
    • проверка на "вложенных" данных.
  • реализуйте функцию так же пошагово, проверяя, что изменения для сложных кейсов не сломали более простые;

  • документация по JSON.stringify на MDN.

Для полного доступа к испытанию нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов