Tenho o seguinte código python:
import json
data = {"name": "John", "age": 30, "city": "New York"}
print(data)
json_string = json.dumps(data, indent=4)
print(json_string)
json_string_escaped = json_string.replace('"','\\"')
print(json_string_escaped)
dataone = {"json_string": json_string_escaped}
print(dataone)
agora json_string_escaped está bom para mostrar:
{
\"name\": \"John\",
\"age\": 30,
\"city\": \"New York\"
}
Agora preciso anexar esta string de escape ao novo JSON. O formato de barra invertida simples e aspas duplas é exigido pela API REST:
dataone = {"json_string": json_string_escaped}
print(dataone)
Mas isso adicionou outra barra invertida, o que não é um comportamento intencional:
{'json_string': '{\n \\"name\\": \\"John\\",\n \\"age\\": 30,\n \\"city\\": \\"New York\\"\n}'}
Como ter uma variável dataone com uma única barra invertida e aspas duplas?
Não faça seu próprio escape, deixe que
json.dumps()
eles façam isso por você. Para obter o escape aninhado desejado, use várias camadas dejson.dumps()
.saída: