Я пытаюсь написать функцию, которая принимает некоторый объект, например число, строку, список или карту (пар ключ-значение); и возвращает действительное JSON представление этого ввода в виде строки.
Я уже настроил другие json кодировщики для простых чисел и строковых входов:
Input => Output
a number with value 123 => 123 (string)
a string with value abc => "abc" (string)
Но у меня возникают проблемы с преобразованием массива, например [1, "2", 3]
Input => Output
1,2,three array => [1,2,"three"] (string)
Вот мой текущий код:
var my_json_encode = function(input) {
if(typeof(input) === "string"){
return '"'+input+'"'
}
if(typeof(input) === "number"){
return `${input}`
}
//This is causing my issue
if(Array.isArray(input)) {
console.log(input)
}
Я мог бы просто добавить и вернуть JSON .stringify (вход), чтобы изменить его, но я не хочу использовать это. Я знаю, что могу создать какое-то рекурсивное решение, так как у меня есть базовые случаи для чисел и строк. Я заблокирован по этому вопросу, и любая помощь будет оценена
Редактировать: Таким образом, решение, которое было предоставлено ниже в разделе ответов! Спасибо:)