J'ai:
queryString=`key_value="something"&type_name=user&value={"password":"Test1234"}&key_attribute=guid`
Je souhaite remplacer le mot de passe
de Test1234
par [HIDDEN]
.
4 Réponses :
Si vous êtes dans node, vous pouvez simplement analyser puis stringifier la chaîne de requête
var qs=require("querystring") var temp=qs.parse(queryString) var user=JSON.parse(temp.value) user.password='[HIDDEN]' temp.value=JSON.stringify(user) queryString=qs.stringify(temp)
Browserify a également une implémentation de chaîne de requête, mais vous souhaitez également utiliser regexp
p>
Une façon d'y parvenir est:
let queryString=`key_value="something"&type_name=user&value={"password":"Test1234"}&key_attribute=guid` let modifiedString = queryString.replace(/("password":)"[\w]+"/, '$1"[HIDDEN]"') console.log(modifiedString)
Utilisez URLSearchParams
a > interface pour créer un objet itérable à partir de la chaîne de requête. Sélectionnez la valeur que vous souhaitez modifier avec le get ( )
de l'objet et analyser la valeur d'un objet en utilisant JSON.parse
.
Vous avez maintenant la valeur en tant qu'objet à partir duquel vous pouvez mettre à jour la valeur de la propriété password
.
Utilisez le développeur set ()
pour écraser la valeur code > entrée de la chaîne de requête et redéfinissez l'objet en JSON.
Transformez l'objet URLSearchParams en une chaîne avec Méthode toString ()
.
const queryString=`key_value="something"&type_name=user&value={"password":"Test1234"}&key_attribute=guid`; const params = new URLSearchParams(queryString); const value = params.get('value'); const objectValue = JSON.parse(value); objectValue.password = '[HIDDEN]'; params.set('value', JSON.stringify(objectValue)); const updatedQueryString = params.toString(); console.log(updatedQueryString);
Bien qu'il existe de nombreux packages qui peuvent être utilisés pour résoudre ce problème, je suggère d'apprendre à le résoudre brut.
Les solutions ci-dessous vous aideront à comprendre comment faire les choses
const queryString = `key_value="something"&type_name=user&value={"password":"Test1234"}&key_attribute=guid`; // SOLUTION 1 // convert string to object, change key, and convert back to string const jsonString = queryString .split('&') .reduce((acc, next) => { const [key, value] = next.split('='); acc[key] = value.indexOf('{') === 0 ? JSON.parse(value) : value; return acc }, {}) jsonString.value.password = '[HIDDEN]' const solution1 = Object.keys(jsonString).map(key => { const val = typeof jsonString[key] === 'object' ? JSON.stringify(jsonString[key]) : jsonString[key] return `${key}=${val}` }).join('&') // SOLUTION 2 // Simply replace by regex using strict parameter const solution2 = queryString.replace(/&value={"password":"(\w+)"}&/gi, '[HIDDEN]') console.log('Using JSON.parse:', solution1) console.log('Using regex:', solution2)