首页 > 解决方案 > 将 json 数据作为字符串添加到字典 Python

问题描述

我试图将一些 json 数据添加到字典中,我已经完成了,但不是以我想要的方式。

我用 Python 提出了一些请求,在发送的数据中我想添加一些参数

这是我的完整要求

def breakoutstats():

cookies = a
headers = {
    'Connection': 'keep-alive',
    'Accept': '*/*',
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Origin': 'www.site.com',
    'Sec-Fetch-Site': 'same-origin',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Dest': 'empty',
    'Referer': 'www.site.com',
    'Accept-Language': 'en-US,en;q=0.9,es;q=0.8',
}

data = {
'ajax': '1',
'item': 'false',
'timeStamp': '1592832890669600142',
'task': 'getReport',
'divId': 'MainReport',
'reportType': '0',

}
response = requests.post('www.site.com', headers=headers, cookies=cookies, data=data)

我要编辑的参数是数据,我想从 json 文件中附加一个 json 信息,如前所述,我已经完成了,但我需要在单引号内附加信息,

这是我的结果:

    data = {
    'ajax': '1',
    'item': 'false',
    'timeStamp': '1592832890669600142',
    'task': 'getReport',
    'divId': 'MainReport',
    'reportType': '0',
    'str' : {'RequestedOutputOptions': '15;23;45;24;26;46', 'FromDate': '2020-06-22 00:00:00', 'ToDate': '2020/06/22 23:59:00', 'CustomerTrafficIds': 'IN6449;6463', 'CustomerIPIds': '', 'ProviderTrafficIds': '', 'ProviderTrunkIds': '', 'ProviderIPIds': '', 'IsMergeCDR': '2', 'INXNames': '', 'InSPXCDRGenIds': '', 'OutSPXCDRGenIds': '', 'RGIds': '', 'GatewayIds': '', 'CountryCodes': 'IN509', 'CityCodes': '509=Mobile Digicel', 'CitiesAndOr': 'AND', 'CityCodes2': '', 'Modalidads': '', 'OperatorIds': '', 'DestinationGroupIds': '', 'CustomCodesGroupIds': '', 'UseTemporaryTable': 'NULL', 'AutoRefreshReport': 0, 'DisconnectCause': '', 'SelectedValues': '', 'ShowInGraph': 0, 'NumOfSample': 'NULL', 'SplitBy': -1, 'FieldToAgreg': 'NULL', 'AnchorFields': -1, 'AutoRefresh': 0, 
'FiltersForRecords': '', 'DailyCycle': 0, 'CompareTableName': '', 'DynamicFilters': '[]'}
    }

这就是我需要的。

    data = {
    'ajax': '1',
    'item': 'false',
    'timeStamp': '1592832890669600142',
    'task': 'getReport',
    'divId': 'MainReport',
    'reportType': '0',
    'str': '{"RequestedOutputOptions":"24;22;43;5;27;26;16;2;4;30;44;45;49","FromDate":"2020-06-22 00:00:00","ToDate":"2020/06/22 11:04:00","CustomerTrafficIds":"IN6449;6463","CustomerIPIds":"","ProviderTrafficIds":"","ProviderTrunkIds":"","ProviderIPIds":"","IsMergeCDR":"2","INXNames":"","InSPXCDRGenIds":"","OutSPXCDRGenIds":"","RGIds":"","GatewayIds":"","CountryCodes":"IN509","CityCodes":"509=Mobile Digicel","CitiesAndOr":"AND","CityCodes2":"","Modalidads":"","OperatorIds":"","DestinationGroupIds":"","CustomCodesGroupIds":"","UseTemporaryTable":"NULL","AutoRefreshReport":0,"DisconnectCause":"IN200","SelectedValues":"","ShowInGraph":0,"NumOfSample":"NULL","SplitBy":-1,"FieldToAgreg":"NULL","AnchorFields":-1,"AutoRefresh":0,"FiltersForRecords":"","DailyCycle":0,"CompareTableName":"","DynamicFilters":"[]","Title":"","DownloadToFile":0,"MaxRows":0}'
}

正如您在我的结果中看到的那样,我得到的数据没有在单引号内,在括号内也有单引号而不是双引号,正如您在第二个结果中看到的那样。

这是我用来将信息附加到数据字典的代码。

with open('breakoutrequest.json', 'r') as myfile:
    data=myfile.read()
# parse file
obj = json.loads(data)
data.update({'str': obj})

或者有没有其他最简单的方法来编辑请求中的数据?

标签: pythonjsonpython-requests

解决方案


为什么要解析它?

with open('breakoutrequest.json', 'r') as myfile:
    data.update({'str': myfile.read()})

这就是你得到的:

{
    "ajax": "1",
    "item": "false",
    "timeStamp": "1592832890669600142",
    "task": "getReport",
    "divId": "MainReport",
    "reportType": "0",
    "str": "{\"RequestedOutputOptions\":\"24;22;43;5;27;26;16;2;4;30;44;45;49\",\"FromDate\":\"2020-06-22 00:00:00\",\"ToDate\":\"2020/06/22 11:04:00\",\"CustomerTrafficIds\":\"IN6449;6463\",\"CustomerIPIds\":\"\",\"ProviderTrafficIds\":\"\",\"ProviderTrunkIds\":\"\",\"ProviderIPIds\":\"\",\"IsMergeCDR\":\"2\",\"INXNames\":\"\",\"InSPXCDRGenIds\":\"\",\"OutSPXCDRGenIds\":\"\",\"RGIds\":\"\",\"GatewayIds\":\"\",\"CountryCodes\":\"IN509\",\"CityCodes\":\"509=Mobile Digicel\",\"CitiesAndOr\":\"AND\",\"CityCodes2\":\"\",\"Modalidads\":\"\",\"OperatorIds\":\"\",\"DestinationGroupIds\":\"\",\"CustomCodesGroupIds\":\"\",\"UseTemporaryTable\":\"NULL\",\"AutoRefreshReport\":0,\"DisconnectCause\":\"IN200\",\"SelectedValues\":\"\",\"ShowInGraph\":0,\"NumOfSample\":\"NULL\",\"SplitBy\":-1,\"FieldToAgreg\":\"NULL\",\"AnchorFields\":-1,\"AutoRefresh\":0,\"FiltersForRecords\":\"\",\"DailyCycle\":0,\"CompareTableName\":\"\",\"DynamicFilters\":\"[]\",\"Title\":\"\",\"DownloadToFile\":0,\"MaxRows\":0}"
}

推荐阅读