【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:\\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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM