来自 URL 的我的 JSON 数据:
[ { "url": "http://google.com" }, { "url":"http://yahoo.com" } ]
这将带来一个 URL 列表
jsOnData.push(xhr.response);
jsOnData.length
将返回 1
jsOnData[0][0].url
将返回第一个 url
jsOnData[0].length
将返回 2
但在 Android 4.4.4 默认浏览器中,它是异常值,并且无法按预期工作。在桌面浏览器和移动 Chrome、Opera、Firefox 中,它按预期工作。但Android浏览器、UC WEB、Dolphin无法正常工作,并且也重新调整相同的异常值。
异常值:101(Android浏览器、UC WEB & Dolphin)
从 JSON 文件获取 url 列表并将其解析为普通 JavaScript 数组的最佳方法是什么?
最佳答案
我认为您对 JSON 是什么有误解。 JSON 是一个字符串,而不是一个对象,因此它是 JavaScript Object Notation 的缩写。您想要的通俗地称为 POJO 或 Plain Old Javascript O 对象。他们是不同的。
似乎您用来发出 HTTP 请求的任何内容都会在某些浏览器上自动将 JSON 响应解析为 POJO,而在其他浏览器上则不然。
var json = '[{"url":"http://google.com"},{"url":"http://yahoo.com"}]';
json.length // 56 (this is the character count since json is a string)
var obj = JSON.parse(json);
obj.length // 2 (since there are two items in the array
obj[0].url // 'http://google.com'
更新:在与OP讨论后,他的问题是在他的XMLHttpRequest
处理程序中缺乏对responseType
的支持(这是一个2级增强,因为有问题的浏览器仅支持1级)。添加了以下检查以查看响应是否自动解析为对象,如果没有则手动执行:
var obj = typeof xhr.response === '字符串' ? JSON.parse(xhr.response) : xhr.response;
关于javascript - JSON数据到javascript数组Android浏览器.length给出了错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29589474/