Ответ 1
Вы можете использовать что-то вроде этого
<script type="text/javascript">
var myObject = {'name':'Kasun', 'address':'columbo','age': '29'}
var count = Object.keys(myObject).length;
console.log(count);
</script>
У меня есть объект json, который возвращается с помощью запроса AJAX, и у меня возникают некоторые проблемы с .length
, потому что он продолжает возвращать undefined
. Просто интересно, правильно ли я использую его:
console.log(data.length);
console.log(data.phones.length);
Оба они возвращают undefined
, даже если они являются допустимыми объектами.
Update:
Образец возвращаемого объекта JSON:
{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}
Вы можете использовать что-то вроде этого
<script type="text/javascript">
var myObject = {'name':'Kasun', 'address':'columbo','age': '29'}
var count = Object.keys(myObject).length;
console.log(count);
</script>
Ваша проблема заключается в том, что ваш телефонный объект не имеет свойства длины (если вы не определите его где-то в возвращаемом вами JSON), поскольку объекты не совпадают с массивами, даже если они используются в качестве ассоциативных массивов. Если бы объект телефонов был массивом, он имел бы длину. У вас есть два варианта (возможно, больше).
Измените свою структуру JSON (при условии, что это возможно), чтобы "телефоны" стали
"phones":[{"number":"XXXXXXXXXX","type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}]
(обратите внимание, что для каждого телефона нет нумерованного идентификатора, так как они возвращаются в 0-индексированном массиве). В этом ответе phones.length
будет действительна.
Перебирайте объекты, содержащиеся в объекте вашего телефона, и считайте их по мере необходимости, например:
var key, count = 0;
for(key in data.phones) {
if(data.phones.hasOwnProperty(key)) {
count++;
}
}
Если вы ориентируетесь только на новые браузеры, вариант 2 может выглядеть следующим образом
Рассмотрим использование underscore.js. Это позволит вам проверить размер, например:
var data = {one : 1, two : 2, three : 3};
_.size(data);
//=> 3
_.keys(data);
//=> ["one", "two", "three"]
_.keys(data).length;
//=> 3
вам не нужно менять формат JSON.
заменить:
console.log(data.phones.length);
с:
console.log( Object.keys( data.phones ).length ) ;
var json=[{"id":"431","code":"0.85.PSFR01215","price":"2457.77","volume":"23.0","total":"565.29"},{"id":"430","code":"0.85.PSFR00608","price":"1752.45","volume":"4.0","total":"70.1"},{"id":"429","code":"0.84.SMAB00060","price":"4147.5","volume":"2.0","total":"82.95"},{"id":"428","code":"0.84.SMAB00050","price":"4077.5","volume":"3.0","total":"122.32"}]
var obj = JSON.parse(json);
var length = Object.keys(obj).length; //you get length json result 4
попробуй это
$.parseJSON(data).length
используйте этот
//for getting length of object
int length = jsonObject.length();
или
//for getting length of array
int length = jsonArray.length();
$(document).ready(function () {
$('#count_my_data').click(function () {
var count = 0;
while (true) {
try {
var v1 = mydata[count].TechnologyId.toString();
count = count + 1;
}
catch (e)
{ break; }
}
alert(count);
});
});