Me sorprende json.length
está devolviendo algo; esa cadena JSON no es válida. Las llaves más externas ({}
) denotan un objeto, que debe contener claves y valores, pero solo contiene un valor (la matriz, sin clave).
Si quita las llaves, debería funcionar correctamente. ¿Los pusiste allí, tal vez porque lo habías visto hecho? Si es así, quiere paréntesis (()
), no llaves.
Tenga en cuenta que el uso de eval
en cadenas JSON no es seguro, si desea utilizar un decodificador de JSON que no utiliza eval
(como json2.js, que utiliza eval
, pero sólo después de muy asegurar cuidadosamente que es seguro hacerlo, modificándolo si es necesario), para una seguridad óptima. Los paréntesis ayudan, pero no son en absoluto una solución completa.
debe utilizar hasOwnProperty: 'for (var x de personas) si (persons.hasOwnProperty (x)) cuenta ++; ' – vsync