Завдання перетворити пошуковий рядок в валідний JSON об`єкт
Дано рядок вигляду http://myurl.com?foo.bar=42&foo.baz=hello&bar.baz=true&baz=11
, який необхідно перетворити на об`єкт вигляду:
{
"foo": {
"bar": 42,
"baz": "hello",
},
"bar": {
"baz": true,
},
"baz": 11,
}
-
перелік параметрів починається з символа
?
-
параметри розділяються символом
&
-
назва параметру та його значення розділяються символом
=
-
вкладені поля розділяються символом
.
- Наприклад:
a=1
-->{ "a": 1 }
a.b=1
-->{ "a": { "b": 1 } }
a.b.c=1
-->{ "a": { "b": { "c":1 } } }
-
якщо у поля відсутнє значення, це поле потрібно проігнорувати
- Наприклад:
a=1&b=&c=test
-->{ "a": 1, "c": "test" }
- Наприклад:
-
якщо є поля з однаковими назвами то у вихідному об'єкті залишається та властивість яка в заданому рядку розташована правіше
- наприклад:
user.name=Alex&user.name=Oleg
-->{ "user": { "name": "Oleg" } }
- наприклад:
-
в значеннях параметрів можуть зустрічатись подвійні лапки. Це вказує на тип даних, але самі лапки не потрібно переносити у вихідий об`єкт
- наприклад:
a="true"&b=true&c=42&d="42"&e="hello"&f=hello
Вірно:
{ "a": "true", "b": true, "c": "42", "d": 42, "e": "hello", "f": "hello" }
Невірно:
{ "a": "\"true\"", "b": true, "c": 42, "d": 42, "e": "\"hello\"", "f": "hello" }
-
якщо параметри відсутні, повертати
null
-
якщо рядок не відповідає вищеописаному формату, повертати помилку
- Реалізацію писати у файлі
src/parser.js
- Не використовувати сторонні бібліотеки
- Тести повинні пройти успішно
- запуск проекту:
npm run start http://myurl.com?foo.bar=42&foo.baz=hello&bar.baz=true&baz=11
- запуск тестів:
npm run test
- ! перед запуском тестів потрібно встановити залежності