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)