ИТАК Theres этот JSON объект:граф JSON объектов Javascript
jsontext = {"switches":[{"dpid":"00-00-00-00-00-01"},{"dpid":"00-00-00-00-00-02"},{"dpid":"00-00-00-00-00-03"},{"dpid":"00-00-00-00-00-04"},{"dpid":"00-00-00-00-00-05"},{"dpid":"00-00-00-00-00-06"},{"dpid":"00-00-00-00-00-07"}],
"links":[["00-00-00-00-00-01","00-00-00-00-00-05"],["00-00-00-00-00-02","00-00-00-00-00-03"],["00-00-00-00-00-05","00-00-00-00-00-06"],["00-00-00-00-00-05","00-00-00-00-00-07"],["00-00-00-00-00-02","00-00-00-00-00-04"],["00-00-00-00-00-01","00-00-00-00-00-02"]]}
Цель состоит в том, чтобы сосчитать все ДПИД объекты, которые существуют в нем ... так что я следующий до сих пор:
function objectLength(obj) {
var result = 0;
for(var prop in obj) {
if (obj.hasOwnProperty(prop)) {
// or Object.prototype.hasOwnProperty.call(obj, prop)
result++;
}
}
return result;
}
функция, которую я называю, чтобы получить сумму ДПИДА лет в коммутаторах
objectLength(jsontext.switches);
вопрос в том, когда есть только один DPID для переключателя эс, как это:
jsontext = {"switches":[{"dpid":"00-00-00-00-00-01"}],"links":[]}
он рассчитывает 0 ... это ничего в не делать для раздела ... по какой-то причине взять на себя пустой я думаю ..?
TL; DR, почему, когда только 1 DPID переключателей существует, объект JSON возвращает 0 ..
Ура!
То, что вы говорите, не повторяется. У вас есть трейлинг-кавычка в вашем назначении 'jsontext', поэтому попытка выполнить это приведет к синтаксической ошибке. Если вы удалите это, код вернет 1 так, как ожидалось: http://jsfiddle.net/uu1mtL0g/ Кроме того, здесь нет JSON, у вас есть объект Javascript. JSON - текстовый формат для представления объектов. – Guffa