Retornar string json com aspas duplas em torno da chave / valor em python [duplicado]

Nov 18 2020

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

1 Masklinn Nov 18 2020 at 14:36

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.

1 ErdoganOnal Nov 18 2020 at 14:36

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"}'

1 RaghavGupta Nov 18 2020 at 14:38

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"
    })