我有一个 PHP 数组并使用 json 编码将其回显到 javascript 中,我需要这样做,因为它会非常动态。这是它回显的代码:
{"notempty":true}
我用它来将其转换为 javascript:
var myarray = eval('(' + json + ')');
出于某种原因,它创建了一个对象而不是数组,因此我不能使用 .length 或 for 循环。
有人知道我在这里做错了什么吗?
谢谢
最佳答案
您正在尝试将 Object
视为 Array
,而 Object
不是 Array
,它是一个 Object
。
任何时候您在 JSON 中看到 {}
,这意味着“包含在这些神圣括号中的是一个动态对象”。当您看到 []
时,这意味着“看哪!我是一个数组”(这有一个明显的异常(exception):jQuery 做了一些特殊的工作,使它自己看起来像一个数组)。
因此,为了遍历 Object
,您需要使用 for...in
。
// eval BAD unless you know your input has been sanitized!.
var myObj = JSON.parse('{"notempty":true}');
// personally, I use it in for... in loops. It clarifies that this is a string
// you may want to use hasOwnProperty here as sometimes other "keys" are inserted
for( var it in myObj ) console.log( "myObj["+it+"] = " + myObj[it] );
关于php - 将 JSON 字符串解析为数组,而不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096310/