zoukankan      html  css  js  c++  java
  • 【Charles】【完美解决】导入文件时报错 Import Failed | MalformedJson: Unterminated object at line 1 column xxx path $.log.entries[1].response.content.text

    一、问题

    1.1、Charles中导出会话(比如导出后的文件为 a.har 文件)

    1.2、把 a.har 文件导入Charles中(有时会报如下图所示的错误)

    Import Failed | MalformedJson: Unterminated object at line 1 column xxx path $.log.entries[1].response.content.text

    二、分析

    2.1、其实charles导出的文件 内容是一个json格式的文件

    2.2、response.content.text 的字符串中的双引号在导出时未做转义 所以在导入时不能识别为json格式 即报错

    三、解决

    判断 response.content.text 字符串中是否包含双引号 “ " ” 若有 则替换为 ” " “  也就是转个义即可

    四、代码

    if __name__ == '__main__':
        # charles导出的文件(仅需修改这个即可)
        charles_export_file = 'C:\UsersAdministratorDesktopcharles导出的文件.har'
    
        with open(charles_export_file, encoding='utf-8') as f:
            result = f.readlines()
        result_json = json.loads(result[0])
        entries = result_json['log']['entries']
    
        for i in entries:
            for i_header in i['response']['headers']:
                for i_key, i_value in i_header.items():
                    if i_value == 'Content-Type' and i_header['value'].startswith('text/'):
                        s = '【已替换】type:{}'.format(i_header['value'])
                        print(s.ljust(20), i['request']['url'])
                        # 查找text中的双引号 并转义
                        response_str_old = str(i['response']['content']['text'])
                        response_str_new = response_str_old.replace('"', '\"')
                        break
        new_file = ''
        file_list = charles_export_file.split('\')
        file_list[len(file_list) - 1] = '可正常导入_{}'.format(file_list[len(file_list) - 1])
        for i in file_list:
            new_file += i
            new_file += '\'
        # 删除最后一个 
        new_file = new_file[:-1]
        result_json = json.dumps(result_json)
        with open(new_file, 'w') as f:
            f.writelines(result_json)
    如果忍耐算是坚强 我选择抵抗 如果妥协算是努力 我选择争取
  • 相关阅读:
    leetcode——202.快乐数
    leetcode——136. 只出现一次的数字
    leetcode——74.搜索二维矩阵
    leetcode——240.搜索二维矩阵
    leetcode——414.第三大的数
    020 迭代器模式
    019 模板模式
    018 中介者模式
    017 命令模式
    016 责任链模式
  • 原文地址:https://www.cnblogs.com/danhuai/p/14336753.html
Copyright © 2011-2022 走看看