У меня проблемы с выводом действительной строки JSON из объекта в качестве входных данных без использования JSON .stringify ().
Вот моя текущая полная реализация -
var my_json_encode = function(input) {
if(typeof(input) === "string"){
return '"'+input+'"'
}
if(typeof(input) === "number"){
return `${input}`
}
if(Array.isArray(input)) {
const formatedArrayMembers = input.map(value => my_json_encode(value)).join(',');
return `[${formatedArrayMembers}]`;
}
*****Trouble is here*******
if(typeof(input) === "object" && !Array.isArray(input)) {
let temp = "";
for (let [key, value] of Object.entries(input)) {
let val = `${key} : ${value}`;
temp += my_json_encode(val)
}
return `{${temp}}`
}
}
Current input is -> {"key1":"val1","key2":"val2"}
Expected output is -> {"key1":"val1","key2":"val2"}
Current output using object type check in my_json_encode -> {"key1 : val1""key2 : val2"}
Я чувствую, что я близко, но что-то отсутствует в моей логике c, я начал с этого для долго и нужно некоторое руководство.
Если я смогу заставить мой объектный кодер работать, я уверен, что смогу рекурсивно использовать его для проверки более сложных входных данных, таких как:
Expected Output-> [1,"a",{"key1":"value1","key2":null,"key3":[4,"b"],"key5":{"inner1":"innerval1","inner2":9}}]
Связанный вопрос, который я задал для массива JSON строка была решена здесь