Estoy tratando de hacer un convertidor Unicode de UTF-8 a UTF-16, pero solo quiero convertir cadenas y objetos y cosas así en JSON, no la estructura de JSON porque eso lo haría ilegible para los programas.
Ingresó UTF-8:
{ "hi":{ "this":["is","just","some","example"] } }UTF-16 esperado:
{ "\u0068\u0069":{ "\u0074\u0068\u0069\u0073":["\u0069\u0073","\u006a\u0075\u0073\u0074","\u0073\u006f\u006d\u0065","\u0065\u0078\u0061\u006d\u0070\u006c\u0065"] } }¿Alguien puede ayudar? Además, soy bastante nuevo en Javascript, así que no seas demasiado duro.
Esta es una muy buena manera de hacer lo que necesita:
let json_string = '{ "hi": {"this": ["is", "just", "some", "example"]}}' function encode_to_utf16(x) { var res = ""; for (var i = 0; i < x.length; i++) res+= "\\u" + ("000" + x[i].charCodeAt(0).toString(16)).substr(-4); return res; } // get all the values present between the double quotes let arr = json_string.match(/"[^"]+"/gi) arr.forEach((str)=>{ // replace double quotes with empty string str = str.replace(/"/gi,""); // encode and replace them json_string = json_string.replace(str,encode_to_utf16(str)) }) console.log(json_string) Sin embargo , si hay una comilla doble con un carácter de escape ( \" ) en algún lugar de una cadena, esto se romperá. Tal vez, puedas improvisar sobre eso.