Retornar string json com aspas duplas em torno da chave / valor em python [duplicado]
Estou usando a versão python 3.7 . Eu tenho uma função python que retorna uma string json. Embora eu tenha chave / valor entre aspas duplas, a função sempre retorna chave / valor com aspas simples. Alguém pode me dizer como consertar isso
def get_json():
return {
"id":"123",
"name":"Frank"
}
a saída da função acima é
{'id':'123', 'name':'Frank'}
O que eu preciso é
{"id":"123", "name":"Frank"}
Alguem pode me ajudar com esse problema
Respostas
Sua função não está retornando nada em JSON, está retornando um objeto Python dict e Python imprime strings com aspas simples por padrão.
Se você quiser JSON, serialize os dados em json (geralmente na borda) usando json.dumps.
Em Python {'id':'123', 'name':'Frank'}e {"id":"123", "name":"Frank"}representa a mesma coisa, neste caso, dicionário.
Se você precisar de string em vez de dict, pode despejar seus dados.
import json
def get_json():
return json.dumps({
"id":"123",
"name":"Frank"
})
Ele retorna uma string (não um dicionário) '{"id": "123", "name": "Frank"}'
A __str__classe em python é responsável pela representação de string com ambos os casos para imprimir seu objeto. As aspas simples e duplas descrevem o valor retornado pelo objeto. No entanto, você está trabalhando com json, pode ter problemas para encontrar o objeto de retorno. A solução é simples -
import json
def get_json():
return json.dumps({
"id":"123",
"name":"Frank"
})