Back to all solutions
#2633 - Convert Object to JSON String
Problem Description
Given a value, return a valid JSON string of that value. The value can be a string, number, array, object, boolean, or null. The returned string should not include extra spaces. The order of keys should be the same as the order returned by Object.keys().
Please solve it without using the built-in JSON.stringify method.
Solution
/**
* @param {null|boolean|number|string|Array|Object} object
* @return {string}
*/
var jsonStringify = function(object) {
if (object === null) return 'null';
if (typeof object === 'boolean' || typeof object === 'number') return String(object);
if (typeof object === 'string') return `"${object}"`;
if (Array.isArray(object)) {
const elements = object.map(item => jsonStringify(item));
return `[${elements.join(',')}]`;
}
const pairs = Object.keys(object).map(key => `"${key}":${jsonStringify(object[key])}`);
return `{${pairs.join(',')}}`;
};