繁体   English   中英

JSON数据到javascript Array Android浏览器.length提供了错误的值

[英]JSON data to javascript Array Android browser .length gives wrong value

来自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默认浏览器中,它是异常值,并且无法正常工作。 在桌面浏览器和Mobile Chrome,Opera,Firefox中,它可以正常工作。 但是Android浏览器,UC WEB,Dolphin无法正常工作,并且还会重新调整相同的异常值。

异常值:101(在Android浏览器上,UC WEB和Dolphin)

哪种方法是从JSON文件获取网址列表并将其解析为普通JavaScript数组的最佳方法?

我认为您对JSON是个误解。 JSON是一个字符串,而不是一个对象,因此它们也同样的J ava 小号 CRIPTöbjectÑ浮选的缩写。 你想被通俗地称为一个POJO或P躺在ØLDĴavascriptØbject什么。 他们是不同的。

似乎您用来发出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 === 'string' ? JSON.parse(xhr.response) : xhr.response;

使用concat而不是push,因为您将一个数组添加到另一个数组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM