- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 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对象的通用方法...
最佳答案
没有人回答这个问题,我只需要为我的项目解决它,所以我将发布我的解决方案。
readAsText 方法输出一个字符串,因此您实际上可以对其运行替换,但您需要做的是使用 RegExp 来查找换行符。这是我的解决方案:
var sanitizerRegex = new RegExp(String.fromCharCode(10), 'g');
var sanitizedData = JSON.parse(result.replace(sanitizerRegex, ''));
我使用 String 方法 fromCharCode 来获取特定的换行符和“g”标志来匹配整个字符串中的所有实例。您的字符串解决方案的问题是您无法使用反斜杠和“n”的字符进行字符串替换,因为问题是实际的换行符,它仅表示为“\n”。
我不知道 JSON.parse 无法处理换行符的原因,也不知道为什么文件插件会引入这个问题,但这个解决方案似乎对我有用。
此外,如果可以避免的话,切勿像这样使用 eval,尤其是在来自 JSON 文件等源的输入时。即使在 cordova 应用程序中,使用 eval 也可能非常不安全。
关于json - cordova readAsText 返回无法解析为 JSON 对象的 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26887706/
我完全不熟悉 javascript(Hello World Level),我在谷歌中进行了大量搜索,但甚至找不到一个结果来解释 ReadAsText() 方法获得的参数。我试图输入文件地址和编码格式,
我正在尝试读取用户目录中的所有文件并在文本框中显示其内容。 读取单个文件效果很好,但是,当我尝试读取整个目录时,事情变得很奇怪。 遍历目录时,仅正确读取目录中的最后一个文件。无论目录中有多少文件,此行
如何防止用户选择要读取的文件并将其固定到我的代码的特定文件: onLoadFile = function(e) { var file = e.target.file
我已经实现了以下代码来通过 解析 CSV选择: export async function parse(file: File) { let content = ''; const reade
我想在我的本地机器上读取一个文本文件并将内容放入一个变量中。我发现的所有示例都使用输入按钮(type =“file”),该按钮传递一个参数,该参数被函数收集为“evt”。我只是传递一个文件名,例如“m
我正在尝试使用 readAsText ngCordova 插件读取 CSV 文件的内容。 只有当文件编码为unicode时我才能做到这一点,但大多数CSV文件都是Shift-JIS。当文件为 Shif
我正在开发一个html项目,其中用户上传一个txt文件,其内容被进一步处理并显示结果。上传和处理步骤工作正常,但不知何故,结果从未显示。 (对我来说)令人困惑的部分是,如果我在处理和结果呈现之间添加一
我正在使用 Cordova 文件插件读取本地文件系统上的 JSON。除了一些我收到错误的文件外,它工作得很好: SyntaxError: Unexpected EOF 这些文件可能有错误的字符,我需要
我为本地文件处理创建了一个测试,但无法获取"file"类型以返回 Chrome 或 Firefox 中的任何内容。 Chrome 没有给出任何错误,并且表现得好像从未调用过 FileReader(),
当 readAsText() 函数完成时,结果存储在 .result 中 如何在.result中查看读取的文件内容是否正确? fr = new FileReader(); fr.readAsTex
我编写了以下代码来使用 HTML5 文件 API 检查上传的文件是否存在。 Add Document 以下 JavaScript 代码已映射到它,如下所示: function addDoc() {
我使用 http 和 cordova 文件 readAsText 函数读取 json 文件。 http请求返回一个对象,这是可以的。 cordova 文件 readAsText 函数返回“字符串”,其
所以我正在尝试使用 phonegap 文件 API 来保存并稍后在应用程序中加载文件。保存似乎有效,但读取文件会引发此错误: processMessage failed: Stack: TypeErr
举个例子,当我使用 FileReader API 从文件中读取 π 字符 (\u03C0) 时,当我使用 FileReader 读取它时,我会将 pi 字符返回给我.readAsText(blob)
我在 Mac OS X 上使用 Chrome 12,我在文档中包含了 jQuery 1.6.1。 我尝试以文本形式读取文件内容并将其保存在具有以下功能的数据对象中: this.upload = fun
我正在尝试读取 CSV 或 Excel 文件以将其转换为表格。现在我刚刚创建了一个类来读取输入文件: 输入是: 现在我刚刚创建了一个类来读取输入文件: class InputReader_tiqe
调整 How FileReader.readAsText in HTML5 File API works? 后代码达到我的目的。它给了我一个错误。 Uncaught TypeError: Cannot
在 HTML 文件中,我创建了一个上传文件的按钮: Upload 在 JavaScript 文件中: //this event click event on the upload buttom, a
我正在使用 Phonegap 下载文件,解压缩,然后读取文件。在我尝试将文件作为文本读取之前,一切正常。如果我使用 readAsDataURL(),那么我会将一大堆内容记录到控制台。 function
我找到了图片上传预览的代码,我很困惑 FileRead() 是怎么回事? var openFile = function(event) { var input = event.target;
我是一名优秀的程序员,十分优秀!