2016-01-11 7 views
1

Использование requests для публикации JSON для веб-службы. Typing вне JSON, как это работает:Сообщение об ошибке Python не работает при использовании json.dump

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')) 

Я хочу использовать переменные в JSON, так что строить из словаря с использованием json.dumps.

Ниже производит 400 ошибку:

Could not read JSON: Can not instantiate value of type [simple type, classcom.linkco.ws.v1.model.V1SearchQuery] from JSON String; no single-String constructor/factory method

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 

Я печать json.dumps(jsonObject) проверить и производит действительный JSON и работает, если скопировать на клиент REST я использую - это хорошо (хорошо - это, вероятно, не по той причине, которую я не смог найти).

ответ

1

Небольшая ошибка причиняет вам неприятности

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

Это должно работать нормально

См, пакет запроса преобразует питона Dict в Json (не вы;))

+0

Это сделал Это. Очень благодарен. Спасибо. –

Смежные вопросы