finereport 中台 帆软 编码解码

帆软用的 post 方式编码不是用的 dict,而是二次 url 编码,需要二次解析

importtimeimporturllib.parseimportjson# 原始字符串encoded_string=data="__parameters__=%7B%22MANUFACTURER%22%3A%22%22%2C%22CATEGORY%22%3A%22%22%2C%22HHPN_LABEL%22%3A%22HHPN%3A%22%2C%22SITE%22%3A%22Tianjin%22%2C%22SITE_LABEL%22%3A%22Site%3A%22%2C%22PLANT_LABEL%22%3A%22Plant%3A%22%2C%22MC_CONTACT_WINDOW%22%3A%22%22%7D"# 第一步:从字符串中提取 JSON 部分 split 中的 1 代表至多分割一次json_string=encoded_string.split('=',1)[1]# 第二步:进行两次 URL 解码decoded_once=urllib.parse.unquote(json_string)decoded_twice=urllib.parse.unquote(decoded_once)# 第三步:JSON 解析parsed_dict=json.loads(decoded_twice)data=json.dumps(parsed_dict,indent=2)# 打印结果print(data)data={"MANUFACTURER":"","CATEGORY":"","HHPN_LABEL":"HHPN:","SITE":"Tianjin","SITE_LABEL":"Site:","PLANT_LABEL":"Plant:","MC_CONTACT_WINDOW":""}json_str=json.dumps(data)json_str=json_str.replace(" ","")# 对 JSON 字符串进行 URL 编码encoded_str=urllib.parse.quote(json_str)data=f"__parameters__={encoded_str}"print(data)