objet json affiche des éléments non attendus
Posté : 22 janv. 2015, 15:25
Bonjour à tous,
J'essaye de parcourir une variable contenant du json en utilisant une boucle.
Etape 1: Je crée mon json
[javascript]
var treeData = {
id: 0,
title: "root - not displayed",
children: [{
id: 1,
title: "Option 1",
children: [{
id: 11,
title: "Option 11",
children: [{
id: 111,
title: "Option 111"
}, {
id: 112,
title: "Option 112"
}]
}, {
id: 12,
title: "Option 12"
}]
}, {
id: 2,
title: "Option 2",
children: [{
id: 21,
title: "Option 21"
}, {
id: 22,
title: "Option 22"
}]
}, {
id: 3,
title: "Option 3",
children: [{
id: 0,
title: "Option 31"
}, {
id: 0,
title: "Option 32"
}]
}]
};
[/javascript]
Ensuite, je crée une boucle pour parcourir les éléments
[javascript]
for (var key in treeData.children) {
var item = tree.children[key];
//Affichage du contenu de la variable
console.log(item);
}
[/javascript]
Le console.log m'affiche bien les éléments attendus, mais également un tas de fonctions javascript qui ne sont pas sensées être dans ma variable.
Si je fais un console.log sur ma variable treeData, j'ai un truc dans ce genre:
[javascript]
[Log] Object (index.php, line 618)
children: Array[3]
id: 0
title: "root - not displayed"
__proto__: Object
__defineGetter__: function __defineGetter__() {
length: 2
name: "__defineGetter__"
__proto__: function () {
__defineSetter__: function __defineSetter__() {
length: 2
name: "__defineSetter__"
__proto__: function () {
__lookupGetter__: function __lookupGetter__() {
length: 1
name: "__lookupGetter__"
__proto__: function () {
__lookupSetter__: function __lookupSetter__() {
length: 1
name: "__lookupSetter__"
__proto__: function () {
constructor: function Object() {
append: function (z) {for(var y=1,w=arguments.length;
cleanValues: function (c, e) {e=e||b;for(var d in c){if(!e(c[d])){delete c[d];}}return c;}
clone: function (i) {var w={};for(var v in i){w[v]=s(i[v]);}return w;}
contains: function (b, c) {return Object.keyOf(b,c)!=null;}
create: function create() {
defineProperties: function defineProperties() {
defineProperty: function defineProperty() {
each: function (i, w, x) {for(var v in i){if(l.call(i,v)){w.call(x,i[v],v,i);
erase: function (c, d) {if(a.call(c,d)){delete c[d];
every: function (b, d, e) {for(var c in b){if(a.call(b,c)&&!d.call(e,b[c],c)){return false;
extend: function (x, w) {if(x==null){return this;}if(v||typeof x!="string"){for(var y in x){i.call(this,y,x[y]);}if(r){for(var z=r.length;z--;){y=r[z];if(x.hasOwnProperty(y)){i.call(this,y,x[y]);
filter: function (b, e, g) {var d={};for(var c in b){var f=b[c];if(a.call(b,c)&&e.call(g,f,c,b)){d[c]=f;}}return d;}
forEach: function (i, w, x) {for(var v in i){if(l.call(i,v)){w.call(x,i[v],v,i);
freeze: function freeze() {
getFromPath: function (e, f) {if(typeof f=="string"){f=f.split(".");}for(var d=0,c=f.length;d<c;d++){if(a.call(e,f[d])){e=e[f[d]];
getLength: function (b) {return Object.keys(b).length;}
getOwnPropertyDescriptor: function getOwnPropertyDescriptor() {
getOwnPropertyNames: function getOwnPropertyNames() {
getPrototypeOf: function getPrototypeOf() {
isExtensible: function isExtensible() {
isFrozen: function isFrozen() {
isSealed: function isSealed() {
keyOf: function (b, d) {for(var c in b){if(a.call(b,c)&&b[c]===d){return c;
keys: function keys() {
length: 1
map: function (b, e, f) {var d={};for(var c in b){if(a.call(b,c)){d[c]=e.call(f,b[c],c,b);
merge: function (C, y, x) {if(e(y)=="string"){return a(C,y,x);}for(var B=1,w=arguments.length;
name: "Object"
preventExtensions: function preventExtensions() {
prototype: Object
run: function (d) {var c=Array.slice(arguments,1);for(var e in d){if(d[e].apply){d[e].apply(d,c);}}return d;}
seal: function seal() {
some: function (b, d, e) {for(var c in b){if(a.call(b,c)&&d.call(e,b[c],c)){return true;}}return false;}
subset: function (d, g) {var f={};
toQueryString: function (b, c) {var d=[];Object.each(b,function(h,g){if(c){g=c+"["+g+"]";
type: function (y) {return(e(y)==v);}
values: function (c) {var b=[];for(var d in c){if(a.call(c,d)){b.push(c[d]);}}return b;}
__proto__: function () {
get __proto__: function () {
hasOwnProperty: function hasOwnProperty() {
isPrototypeOf: function isPrototypeOf() {
propertyIsEnumerable: function propertyIsEnumerable() {
set __proto__: function () {
toLocaleString: function toLocaleString() {
toString: function toString() {
valueOf: function valueOf() {
[/javascript]
Je me rends donc compte que ma boucle affiche aveuglément le contenu json et toutes les autres fonctions qui sont affichées ci-dessus.
Comment suis-je sensé faire dans une boucle pour afficher uniquement mes données et pas tous ces éléments additionnels?
En vous remerciant pour vos réponses.
J'essaye de parcourir une variable contenant du json en utilisant une boucle.
Etape 1: Je crée mon json
[javascript]
var treeData = {
id: 0,
title: "root - not displayed",
children: [{
id: 1,
title: "Option 1",
children: [{
id: 11,
title: "Option 11",
children: [{
id: 111,
title: "Option 111"
}, {
id: 112,
title: "Option 112"
}]
}, {
id: 12,
title: "Option 12"
}]
}, {
id: 2,
title: "Option 2",
children: [{
id: 21,
title: "Option 21"
}, {
id: 22,
title: "Option 22"
}]
}, {
id: 3,
title: "Option 3",
children: [{
id: 0,
title: "Option 31"
}, {
id: 0,
title: "Option 32"
}]
}]
};
[/javascript]
Ensuite, je crée une boucle pour parcourir les éléments
[javascript]
for (var key in treeData.children) {
var item = tree.children[key];
//Affichage du contenu de la variable
console.log(item);
}
[/javascript]
Le console.log m'affiche bien les éléments attendus, mais également un tas de fonctions javascript qui ne sont pas sensées être dans ma variable.
Si je fais un console.log sur ma variable treeData, j'ai un truc dans ce genre:
[javascript]
[Log] Object (index.php, line 618)
children: Array[3]
id: 0
title: "root - not displayed"
__proto__: Object
__defineGetter__: function __defineGetter__() {
length: 2
name: "__defineGetter__"
__proto__: function () {
__defineSetter__: function __defineSetter__() {
length: 2
name: "__defineSetter__"
__proto__: function () {
__lookupGetter__: function __lookupGetter__() {
length: 1
name: "__lookupGetter__"
__proto__: function () {
__lookupSetter__: function __lookupSetter__() {
length: 1
name: "__lookupSetter__"
__proto__: function () {
constructor: function Object() {
append: function (z) {for(var y=1,w=arguments.length;
cleanValues: function (c, e) {e=e||b;for(var d in c){if(!e(c[d])){delete c[d];}}return c;}
clone: function (i) {var w={};for(var v in i){w[v]=s(i[v]);}return w;}
contains: function (b, c) {return Object.keyOf(b,c)!=null;}
create: function create() {
defineProperties: function defineProperties() {
defineProperty: function defineProperty() {
each: function (i, w, x) {for(var v in i){if(l.call(i,v)){w.call(x,i[v],v,i);
erase: function (c, d) {if(a.call(c,d)){delete c[d];
every: function (b, d, e) {for(var c in b){if(a.call(b,c)&&!d.call(e,b[c],c)){return false;
extend: function (x, w) {if(x==null){return this;}if(v||typeof x!="string"){for(var y in x){i.call(this,y,x[y]);}if(r){for(var z=r.length;z--;){y=r[z];if(x.hasOwnProperty(y)){i.call(this,y,x[y]);
filter: function (b, e, g) {var d={};for(var c in b){var f=b[c];if(a.call(b,c)&&e.call(g,f,c,b)){d[c]=f;}}return d;}
forEach: function (i, w, x) {for(var v in i){if(l.call(i,v)){w.call(x,i[v],v,i);
freeze: function freeze() {
getFromPath: function (e, f) {if(typeof f=="string"){f=f.split(".");}for(var d=0,c=f.length;d<c;d++){if(a.call(e,f[d])){e=e[f[d]];
getLength: function (b) {return Object.keys(b).length;}
getOwnPropertyDescriptor: function getOwnPropertyDescriptor() {
getOwnPropertyNames: function getOwnPropertyNames() {
getPrototypeOf: function getPrototypeOf() {
isExtensible: function isExtensible() {
isFrozen: function isFrozen() {
isSealed: function isSealed() {
keyOf: function (b, d) {for(var c in b){if(a.call(b,c)&&b[c]===d){return c;
keys: function keys() {
length: 1
map: function (b, e, f) {var d={};for(var c in b){if(a.call(b,c)){d[c]=e.call(f,b[c],c,b);
merge: function (C, y, x) {if(e(y)=="string"){return a(C,y,x);}for(var B=1,w=arguments.length;
name: "Object"
preventExtensions: function preventExtensions() {
prototype: Object
run: function (d) {var c=Array.slice(arguments,1);for(var e in d){if(d[e].apply){d[e].apply(d,c);}}return d;}
seal: function seal() {
some: function (b, d, e) {for(var c in b){if(a.call(b,c)&&d.call(e,b[c],c)){return true;}}return false;}
subset: function (d, g) {var f={};
toQueryString: function (b, c) {var d=[];Object.each(b,function(h,g){if(c){g=c+"["+g+"]";
type: function (y) {return(e(y)==v);}
values: function (c) {var b=[];for(var d in c){if(a.call(c,d)){b.push(c[d]);}}return b;}
__proto__: function () {
get __proto__: function () {
hasOwnProperty: function hasOwnProperty() {
isPrototypeOf: function isPrototypeOf() {
propertyIsEnumerable: function propertyIsEnumerable() {
set __proto__: function () {
toLocaleString: function toLocaleString() {
toString: function toString() {
valueOf: function valueOf() {
[/javascript]
Je me rends donc compte que ma boucle affiche aveuglément le contenu json et toutes les autres fonctions qui sont affichées ci-dessus.
Comment suis-je sensé faire dans une boucle pour afficher uniquement mes données et pas tous ces éléments additionnels?
En vous remerciant pour vos réponses.