/ / Python solicita postagem falha ao usar json.dump - python, json

Solicitações do Python postam falha ao usar o json.dump - python, json

Usando requests para postar o JSON em um serviço da web. Digitar o JSON assim funciona:

response = requests.post("https://ws.foo.net/search",
json=({
"filters": [
{
"filters": [
{
"field": "type",
"type": "EQ",
"value": "THING"
}
]
},
{
"filters": [
{
"field": "responseCode",
"type": "EQ",
"value": "301"
},
{
"field": "responseCode",
"type": "EQ",
"value": "302"
}
]
},
{
"filters": [
{
"field": "State",
"type": "EQ",
"value": "CONFIRMED"
}
]
}
]
}), auth=("name", "password"))

Eu quero usar variáveis ​​no JSON construindo isso a partir de um dicionário usando json.dumps.

Abaixo produz um erro 400:

Não foi possível ler JSON: não é possível instanciar o valor do tipo [tipo simples, classcom.linkco.ws.v1.model.V1SearchQuery] de JSON String; nenhum construtor de cadeia única / método de fábrica

import json
import requests


jsonObject = {"filters": [{"filters": [{"field": "type","type": "EQ","value": "WEB_SITE"}]},{"filters": [{"field": "name","type": "EQ","value": "something"}]},{"filters": [{"field": "State","type": "EQ","value": "CONFIRMED"}]}]}

response = requests.post("https://ws.foo.net/search", json=json.dumps(jsonObject), auth=("name", "password"))


print json.dumps(jsonObject)
print "----"
print response.text

Eu estou imprimindo json.dumps(jsonObject) para verificar e produz JSON válido e funciona se copiado para um cliente REST que eu estou usando - é bom (bem - provavelmente não é por uma razão que eu não consegui encontrar).

Respostas:

1 para resposta № 1

Um pequeno bug está causando o problema

response = requests.post("https://ws.foo.net/search",
json=jsonObject # was json.dumps(jsonObject),
auth=("name", "password"))

Isso deve funcionar bem

Veja, o pacote de requisição irá converter o python dict para Json (não você;))