将嵌套的json转换为dict

时间:2018-09-19 16:06:42

标签: python web-scraping scrapy

我正在尝试通过Scrapy发送下面的Json

{
"version": 1,
"message_type": 104,
"message_id": 14,
"body": [
{
  "message_type": 104,
  "chat_message": {
    "mssg": "hello",
    "message_type": 1,
    "uid": "15373703487091",
    "from_person_id": "5134266921",
    "to_person_id": "3093543561",
    "read": false
  }
}
],
"is_background": false
}

我尝试将其发送为这样的硬编码

self.postRequest = {"version":"1",
                    "message_type":"104",
                    "message_id":"18",
                    "body":"[{'message_type':'104','chat_message':{'mssg':'hello','message_type':'1','uid':'15372201045381','from_person_id':'5134266921','to_person_id':'3093543561','read':'false'}}]",
                        "is_background":"false"}

yield FormRequest(url=response.url   , formdata=self.postRequest, callback=self.parse_data,dont_filter=True, headers=self.params, cookies=self.cookies)

我获得HTTP 200状态并显示一条错误消息:未知命令server_unknown_action。

所以我不知道我在json结构上做错了什么还是错误在其他地方

1 个答案:

答案 0 :(得分:1)

FormRequest类用于以Content-Type: application/x-www-form-urlencoded的形式发送数据。将JSON作为POST正文发送可能意味着您确实要发送Content-Type: application/json

为此,请使用常规的Request类,将method设置为POST,并将json.dumps()数据self.postRequest放入{{1} }。

Request().body