我使用的API为我提供了一些JSON。
当我检索10个或更少的元素时,我的JSON格式为:
[
{"data":"data1","data2":"data3"},
{...},
{"data":"data1","data2":"data3"}
]
但是,当我检索超过10个元素时,json_encode格式化我的数据如下:
{"0":[{"data":"data1","data2":"data3"}],
"...":[{...}],
"12":[{"data":"data1","data2":"data3"}]
}
这两种JSON在两种情况下都有效,但是我不能在第二种JSON上使用JS myJson.length
。
我如何开展工作,如果我不能,我该怎么做才能测试我的JSON数组的长度?
谢谢:)
答案 0 :(得分:1)
json_encode
将返回后一种格式的原因是,如果不是所有键都连续排序数字。原因是PHP只有一种数组类型,但这会映射到JSON []
数组或{}
对象,具体取决于它包含的键。这意味着你在编码之前以某种方式将数组中的键进行了预测。你的修复应该在那里,而不是在Javascript方面。
答案 1 :(得分:0)
第二个JSON实际上不是JSON数组而是JSON对象,您可以按照以下步骤获取对象中所有键的数组,然后从中获取长度:
Object.keys(JSON).length