Di si tengo un objeto:
{ "name": "abc", "profession": null, "createdOn": "2022-01-05 10:00:05" } ,
cuando lo convierto en una cadena, necesito un resultado como:
'{"name">"abc", "profession">nil, "createdOn">"2022-01-05 10:00:05" }
Si reemplazo globalmente como:
JSON.stringify(inputObject).replace(/null/g, 'nil').replace(/:/g, '>') ,
voy a conseguir:
{"name">"abc", "profession">nil, "createdOn">"2022-01-05 10>00>05" }
Hay un par de problemas aquí:
: mientras que necesito reemplazar las que están delante de los nombres de las claves solamente (como clave : valor)null a nil está funcionando, si profession fuera "profession": "null blah" , sería "profession">"nil blah" . No quiero modificar si el valor no es null .¿Hay una mejor manera de manejar los escenarios anteriores?
function format(inputObject) { if (inputObject) { if (typeof inputObject === "object" && !Array.isArray(inputObject)) { const objectEntries = Object.entries(inputObject); if (objectEntries.length) { const reformatted = objectEntries .map(([key, value]) => `"${key}">${!value ? 'nil' : "\"" + value + "\""}`) .join(",") || ""; return `{${reformatted}}`; } return "{}"; } } return `${inputObject}`; } const obj = { "name": "abc", "profession": null, "createdOn": "2022-01-05 10:00:05" }; function format(inputObject) { if (inputObject) { if (typeof inputObject === "object" && !Array.isArray(inputObject)) { const objectEntries = Object.entries(inputObject); if (objectEntries.length) { const reformatted = objectEntries .map(([key, value]) => `"${key}">${!value ? 'nil' : "\"" + value + "\""}`) .join(",") || ""; return `{${reformatted}}`; } return "{}"; } } return `${inputObject}`; } console.log(format(obj));WYSIWYG => WHAT YOU SHOW IS WHAT YOU GETLa solución sencilla puede ser:
const a = { name: 'abc', gender: 'null', gender2: 'my null value', profession: null, createdOn: '2022-01-05 10:00:05', }; const b = JSON.stringify(a) .replace(/":/g, '">') .replace(/">null/g, '">nil') ; console.log(b);Producción:
{"name">"abc","gender">"null","gender2">"my null value","profession>nil,"createdOn ">"2022-01-05 10:00:05"}