【发布时间】:2016-11-03 15:04:54
【问题描述】:
我使用 http 和 cordova 文件 readAsText 函数读取了我的 json 文件。
http 请求返回一个没问题的对象。
cordova 文件 readAsText 函数返回包含额外“r\n\”符号的“字符串”。这使得无法使用 JSON.parse(evt.target.result)
function readJson(absPath, success, failed){
window.resolveLocalFileSystemURL(absPath, function (entry) {
entry.file(function (file) {
var reader = new FileReader();
reader.onloadend = function (evt) {
success(evt.target.result);
};
reader.readAsText(file);
}, failed);
}, failed);
}
readJson(cordova.file.dataDirectory + 'my.json', function(res){
console.log(JSON.parse(res)); //here I've got an parsing error due to presence of r\n\ symbols
}, failed );
如何使用cordova读取JSON文件?
更新:
以下工作的有趣之处:
a = '{\r\n"a":"1",\r\n"b":"2"\r\n}';
b = JSON.parse(a);
所以问题不仅在于 \r\n... 还有一些由 cordova readAsText 添加的东西
更新2
作为我现在使用的解决方法var object = eval("(" + res + ")")
还在寻找加载json对象的常用方法……
【问题讨论】:
-
如果你这样做:JSON.parse(res.replace(/\r\n|\r|\n/g, ''))
-
我已经尝试过了,这在解析时给出了相同的“SyntaxError: Unexpected token”
-
您找到解决方案了吗?