Actualmente, tengo un archivo JSON que se ve así:
"1E10BC5D4EC68EE2916BFD97F23E951C": "Seattle Seahawks", "E6B87019417436B73B62F7802763A289": "Seaside style. ", "81EEA9E6400BFEADE161559AF14EE468": " {1}", "6F02148E4A78B33C1CEB75BC2753CA69": " {EndDate}", "D89CA2634FFF8FA02D028096BAAE6963": "\"You have received a reward for completing the {Bundle Name} {Number} challenges!", "Mission": { "Default Mission Info Description": "Default Mission Description", "Default Mission Info Name": "Default Mission Name", "RewardDescription": "You ranked {PositionRank}. For your efforts, you have been awarded:", "NonParticipationRewardDescription": "Your teammates did a great job! For their efforts, you have been awarded:", "RewardTitle": "{MissionName} Completed!" }Continúa durante unas 40.000 líneas y me gustaría modificar todas las cadenas establecidas por él. Actualmente, estoy usando @zuzak/owo para intentar lograr esto. Mi código actual se ve así:
const owo = require('@zuzak/owo') fs = require('fs'); var name = '../jsonfile.json'; var data = fs.readFileSync(name).toString(); fs.writeFileSync('../owo.json', JSON.stringify(owo(data))) ¿Cómo podría cambiar solo las cadenas, como "Seaside style. " y no editar ninguno de los nombres de las cadenas, como "81EEA9E6400BFEADE161559AF14EE468" (perdón por cualquier redacción incorrecta, espero que pueda entender lo que estoy diciendo).
En caso de que lo necesite, aquí está el código principal utilizado en @zuzak/owo:
const addAffixes = (str) => randomItem(prefixes) + str + randomItem(suffixes) const substitute = (str) => { const replacements = Object.keys(substitutions) replacements.forEach((x) => { str = replaceString(str, x, substitutions[x]) }) return str }Use JSON.parse() para analizar el archivo JSON en un objeto. Luego revise el objeto llamando a owo() en cada valor.
var data = JSON.parse(fs.readFileSync(name).toString()); for (let key in data) { data[key] = owo(data[key]); } fs.writeFileSync("../owo.json", JSON.stringify(data));Analice el JSON, itere sobre claves, modifique valores. Si es necesario, itere recursivamente sobre subobjetos también:
function owoifyObject (obj) { for (const key in obj) { if (typeof obj[key] === 'string') { obj[key] = owo(obj[key]) } else if (typeof obj[key] === 'object' && obj[key]) { owoifyObject(obj[key]) } } } const data = JSON.parse(fs.readFileSync('file.json').toString()) owoifyObject(data) fs.writeFileSync('file2.json', JSON.stringify(data, null, 4)) Tenga en cuenta que el argumento 4 en JSON.stringify está puramente ahí para formatear, de modo que el resultado se parezca a su entrada; de lo contrario, obtendría todos los datos en una sola línea.