2011-02-09 18 views
10

Tengo un JSON pasado al script. No sé las claves JSON ya que son dinámicas.json keys as numbers

En realidad, son números. Eso es lo que obtendré.

 
var countries = {"223":"142,143","222":"23,26,25,24","170":"1,2"}; 

traté de acceder a los datos de esta manera:

 
var objKey = 223; (var objKey = "223";) 
countries.objKey; 

He intentado cambiar JSON para

 
var countries = {"country223":"142,143","country222":"23,26,25,24","country170":"1,2"}; 

... y el acceso de esta manera:

 
var objKey = "country"+223; (var objKey = "country"+"223";) 
countries.objKey; 

... otra vez nada.

Cualquier consejo sería muy apreciado.

+0

No funciona así. 'objKey' no es propiedad de los países. – mpen

Respuesta

34

lugar de esto:

countries.objKey; 

hacer esto:

countries[objKey]; 

Con notación de corchetes, se puede utilizar el valor de referencia en una variable (o utilizar una cadena o número) para hacer referencia al nombre de la propiedad.

+1

@patrick dw Todavía estoy en el comienzo de mi aventura JS :) – Jeffz

+0

... así que los objetos JSON y JS tienen el mismo aspecto para mí. Si los miras, están construidos casi igual. – Jeffz

+0

@Jeffz: eliminé esa parte del comentario porque no estaba seguro de a qué se refería con * "JSON pasó al script" *. Pensé que quizás había comenzado como JSON. Básicamente, los datos JSON son un formato de intercambio de datos basado en texto. Parece que se parece a los objetos y matrices de JavaScript porque en eso se basa el estándar. Pero realmente no es JSON a menos que sea solo texto. Por ejemplo, este es un objeto literal '{" a ":" b "}', pero esto es válido JSON ''{" a ":" b "}'' (observe las comillas externas), que se puede analizar en el primer objeto. – user113716