【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

【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:\\Users\Administrator\Desktop\charles导出的文件.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)

 

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

上一篇:npm install 时总是报phantomjs-prebuilt@2.1.16安装失败


下一篇:获得url?后的参数