javascript - 在 Vue.js 中处理 JSON 文件后 JSON 字符无效
问题描述
我正在构建一个网络应用程序,我可以在其中上传 JSON 文件,更新它,然后下载它。输出 JSON 无效,因为某些字符在此过程中发生了更改。我不知道我错在哪里,因为即使我只上传 => 下载而不更新 JSON 仍然无效......
这就是我阅读上传的 JSON 的方式:
readFile: function () {
var reader = new FileReader();
reader.onload = function(event) {
this.json = JSON.parse(event.target.result);
}.bind(this);
reader.readAsText(this.file);
}
然后我可以编辑(或不编辑)json
对象。然后我可以用JSON.stringify(json)
.
当我尝试读取或验证输出 JSON 时,我收到指示无效字符的错误,例如:
Invalid characters in string. Control characters must be escaped
对于我的编辑器中的一些行。UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xac in position X: invalid start byte
当我尝试在 python 中加载它时with open('output.json') as json_file: data = json.load(json_file)
使用JSON.parse
then是否会JSON.stringify
修改 JSON 的编码或结构?我怎样才能避免这种影响?
更新:
原始文件可以有一些字符,如\u2013
, \u2014
, \u201d
,\u00e7
但这些字符会被转换成这样的东西 - 或输出 JSON 中的不可见字符,我猜这使它无效。
解决方案
尝试将'UTF-8'
作为第二个参数添加到readAsText
函数中,如下所示:
reader.readAsText(this.file,'UTF-8');
推荐阅读
- javascript - React Native + Android (Java) + iOS (Swift)
- algorithm - 预处理静态数据结构的大 O 表示法
- c++11 - 链表的递归打印函数
- php - 无法在 Laravel 项目的 ENV 文件中使用相对路径引用 SQLite 数据库
- c# - 类实例的 C# 数组
- azure - Azure Function 上的此平台不支持 System.Drawing
- javascript - 在发射完成后而不是在发射之前更改 IF 语句中的值
- react-native - this.props.navigation.navigate 不导航到其他屏幕
- python - pandas,查找并保持连续行 - 创建面板数据
- python - (Tkinter)试图在循环中更新进度条值但程序崩溃?