{
"password": "CRED_DATA" ,
"username": "dom\\user"
}
4 Réponses :
Générez correctement le JSON, en utilisant un dict et json.dump.
payload = json.loads(payload) payload['password'] = CRED_DATA payload = json.dumps(payload)
Si vous obtenez la valeur JSON de quelque part sinon, décodez-le d'abord, mettez à jour le dict résultant, puis videz-le à nouveau.
CRED_DATA = 'randomcred'
payload = {'password': CRED_DATA, 'username': r'dom\user'}
print(json.dumps(payload))
Pour une raison stupide, l'API exige que tout soit cité, je ne comprends pas vraiment pourquoi c'est ainsi que cela semble fonctionner.
Non, l'API nécessite un JSON valide, de toutes les apparences. Vous ne travaillez pas directement avec JSON; vous travaillez avec les structures de données qu'il représente. JSON est un format d'échange.
Vous pouvez essayer les F-Strings en Python :
{
"password": "randomcred" ,
"username": "dom\\user"
}
Sortie:
CRED_DATA = 'randomcred'
payload = F"{{\n \"password\": \"{CRED_DATA}\" ,\n \"username\": \"dom\\\\user\"\n}}"
print(payload)
Cependant, selon la valeur de CRED_DATA , cela n'est pas garanti produire un JSON valide (merci à @chepner). Vous pouvez également utiliser dict et json.dumps () en Python comme déjà mentionné dans l'autre réponse .
Selon la valeur de CRED_DATA , il n'est pas garanti que cela produise un JSON valide.
J'ai ajouté votre remarque dans ma réponse. Cependant, je voulais montrer une autre façon de faire la même chose à l'OP. J'ai également lié votre réponse. Merci
Voulez-vous dire cela?
CRED_DATA = 'randomcred'
payload = "mot de passe:", CRED_DATA
payload2 = ("\ n \" nom d'utilisateur \ ": \" dom \\\\ utilisateur \ "\ n}")
impression (charge utile)
impression (payload2)
Votre variable de charge utile n'est pas un dictionnaire, c'est une chaîne. Je suppose que vous voulez en quelque sorte sérialiser iot pour l'envoyer sur le réseau ou quelque chose - cela vous aiderait si vous élaboriez votre intention.
Dans tous les cas: Si vous voulez que python résout la variable dans votre chaîne, essayez quelque chose comme:
import json
CRED_DATA = 'randomcred'
payload = {
"password": CRED_DATA,
"username": "dom user"
}
print(json.dumps(payload, indent=4, sort_keys=True))
... Mais je pense personnellement qu'il serait préférable d'utiliser un dictionnaire et json. dumps pour y parvenir:
payload = "{\n \"password\": \"" + CRED_DATA + "\" ,\n \"username\": \"dom\\\\user\"\n}"
Encore une fois. En fonction de votre cas d'utilisation qui n'est pas clair dans la question.
quelle variable vous voulez appeler?
Qu'essayez-vous d'accomplir?
J'essaie de faire reconnaître la variable CRED_DATA dans la déclaration de charge utile. J'ai besoin que la valeur de CRED_DATA soit transmise, pas la chaîne réelle CRED_DATA
Vous n'avez pas de "dict entre guillemets"; vous avez une valeur JSON fabriquée à la main qui ne peut pas être facilement utilisée comme vous le souhaitez.
@chepner, donc la solution est de construire une valeur json différente à passer?