使用json.dump

时间:2016-01-11 22:01:34

标签: python json

使用requests将JSON发布到Web服务。像这样输入JSON就可以了:

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错误:

  

无法读取JSON:无法从JSON字符串实例化类型[simple type,classcom.linkco.ws.v1.model.V1SearchQuery]的值;没有单字符串构造函数/工厂方法

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 个答案:

答案 0 :(得分:1)

一个小错误导致你麻烦

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

这应该可以正常工作

请参阅,请求包将python dict转换为Json(不是你;))