Как вставить в переменную в json строку?

Есть вот такая конструкция

newuser = {
    "id": 1,
    "settings": "{\"clients\": [{\"id\": \"bbfad557-28f2-47e5-9f3d-e3c7f532fbda\",\"flow\": \"xtls-rprx-vision\",\"email\": \"email_n\",\"limitIp\": 0,\"totalGB\": 0,\"expiryTime\": 0,\"enable\": true,\"tgId\": \"\",\"subId\": \"2rv0gb458kbfl532\",\"reset\": 0}]}"
}

Ее я передаю в API методом POST. Как мне вставить значение из переменной в эти данные? например у меня есть email_n=some_user_id, как мне вставить для значения email переменную? Пробовал и через

,\"email\": \'+email_n+'\", 

и другими способами, описанными тут - ничего не работает.

Если в api отправить нормальный json в виде

newuser = {
    "id": 1,
    "settings": {
        "clients": [{
            "id": "bbfad557-28f2-47e5-9f3d-e3c7f532fbda",
            "flow": "xtls-rprx-vision",
            "email": {email_n},
            "limitIp": 0,
            "totalGB": 0,
            "expiryTime": 0,
            "enable": true,
            "tgId": "",
            "subId": "2rv0gb458kbfl532",
            "reset": 0
        }]
    }   
}

То API ничего не делает, ему нужны данные с этими спецсимволами, а когда используешь конструкцию с спецсимволами, то непонятно, как вставить переменную.


Ответы (2 шт):

Автор решения: DEN

Пробовали использовать f-строки?

>>> c = '[email protected]'
>>> a = f'{{\\"email_n\\{c}",\\"limitIp\\": 0,\\"totalGB\\": 0,\\"expiryTime\\}}"
>>> print(a)
{\"email_n\[email protected]",\"limitIp\": 0,\"totalGB\": 0,\"expiryTime\}"
→ Ссылка
Автор решения: insolor

Сначала формируете словарь для вставки в settings. email подставляйте просто как переменную. Потом сериализуете его в json-строку с помощью функции json.dumps, и поставляете эту строку в settings:

import json

...

settings = {
    "clients": [{
        "id": "bbfad557-28f2-47e5-9f3d-e3c7f532fbda",
        "flow": "xtls-rprx-vision",
        "email": email_n,
        "limitIp": 0,
        "totalGB": 0,
        "expiryTime": 0,
        "enable": true,
        "tgId": "",
        "subId": "2rv0gb458kbfl532",
        "reset": 0
    }]
} 

newuser = {
    "id": 1,
    "settings": json.dumps(settings)
}
→ Ссылка