Php: JSON stringify

PHP: Деревья 3 сообщения
Обновлено: 12 сент., 23:20
48
Студентов
87%
Завершения

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
//   }
// }

Stringify.php

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

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

Синтаксис:

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

Параметры:

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

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
тестов