Foros del Web » Programando para Internet » Javascript »

No entiendo como hacerlo JSON-Javascript

Estas en el tema de No entiendo como hacerlo JSON-Javascript en el foro de Javascript en Foros del Web. Buenos días , me gustaría saber como cojer los campos que quiero en JSON - javascript . En el head tengo el script largo en ...
  #1 (permalink)  
Antiguo 29/04/2012, 23:44
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
No entiendo como hacerlo JSON-Javascript

Buenos días , me gustaría saber como cojer los campos que quiero en JSON - javascript .

En el head tengo el script largo en una var llamada " JSONObject " .

Luego en el body tengo un script que recorro i lo pongo dentro 1 variable todo y muestro esta variable en 1 linea

for(var i in JSONObject){
var cad = "<p>" +

JSONObject[i].id + " . " +
JSONObject[i].name + " , " ..........................

Como puedo seleccionar los campos que quiero ?

Si he visto que utiliza "C" pero los tutoriales no me sirven de nada , solo muestran todo, no me interesa .

Soy nuevo en JSON :)




Cuando digo seleccionar los campos digo :

que me muestre los campos con "ese texto" o con "aquellos numeros"

También he visto XPATH en JSON pero no me funciona :S como lo hago ?

Última edición por drakgoku1; 30/04/2012 a las 03:38
  #2 (permalink)  
Antiguo 30/04/2012, 06:48
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: No entiendo como hacerlo JSON-Javascript

Este post va aquí no ? , Porque veo preguntas mucho más difíciles con respuesta :)
  #3 (permalink)  
Antiguo 30/04/2012, 07:26
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: No entiendo como hacerlo JSON-Javascript

si, esta bien lo qeu quieres hacer, pero recuerda que no debes tener saltos de linea al mostrar los resultados en javascript.
o sea debe quedar asi:
Código Javascript:
Ver original
  1. for(var i in JSONObject){
  2. var cad = "<p>" + JSONObject[i].id + " . " +JSONObject[i].name + " </p>";
  3. }

me imagino que JSONObject debe ser asi:
Código Javascript:
Ver original
  1. {
  2.     "0": {
  3.         "name": "asd",
  4.         "id": 0
  5.     },
  6.     "1": {
  7.         "name": "juan",
  8.         "id": 1
  9.     }
  10. }

saludos
  #4 (permalink)  
Antiguo 30/04/2012, 08:57
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No entiendo como hacerlo JSON-Javascript

buenas...
@chwc. la operación realizada en una sola línea es indiferente a la realizada en múltiples líneas. automáticamente javascript entiende que la operación continua.

@drakgoku1, no comprendo bien dónde está tu dificultad. si quieres agarrar un campo en particular, entonces utilizas el objeto como cualquier otro para accesar sus campos, salvo en los arrays: objeto.campoArray[un indice].otroCampo. si por ejemplo tienes el siguiente json:

Código:
var json = {"menu": {
    "header": "SVG Viewer",
    "items": [
        {"id": "Open"},
        {"id": "OpenNew", "label": "Open New"},
        null,
        {"id": "ZoomIn", "label": "Zoom In"},
        {"id": "ZoomOut", "label": "Zoom Out"},
        {"id": "OriginalView", "label": "Original View"},
        null,
        {"id": "Quality"},
        {"id": "Pause"},
        {"id": "Mute"},
        null,
        {"id": "Find", "label": "Find..."},
        {"id": "FindAgain", "label": "Find Again"},
        {"id": "Copy"},
        {"id": "CopyAgain", "label": "Copy Again"},
        {"id": "CopySVG", "label": "Copy SVG"},
        {"id": "ViewSVG", "label": "View SVG"},
        {"id": "ViewSource", "label": "View Source"},
        {"id": "SaveAs", "label": "Save As"},
        null,
        {"id": "Help"},
        {"id": "About", "label": "About Adobe CVG Viewer..."}
    ]
}}

json.menu.items[1].label; // Open new
json.menu.items[18].id; // SaveAs
json.menu.items[10]; // null
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 30/04/2012, 09:39
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: No entiendo como hacerlo JSON-Javascript

Cita:
Iniciado por zerokilled Ver Mensaje
buenas...
@chwc. la operación realizada en una sola línea es indiferente a la realizada en múltiples líneas. automáticamente javascript entiende que la operación continua.

@drakgoku1, no comprendo bien dónde está tu dificultad. si quieres agarrar un campo en particular, entonces utilizas el objeto como cualquier otro para accesar sus campos, salvo en los arrays: objeto.campoArray[un indice].otroCampo. si por ejemplo tienes el siguiente json:

Código:
var json = {"menu": {
    "header": "SVG Viewer",
    "items": [
        {"id": "Open"},
        {"id": "OpenNew", "label": "Open New"},
        null,
        {"id": "ZoomIn", "label": "Zoom In"},
        {"id": "ZoomOut", "label": "Zoom Out"},
        {"id": "OriginalView", "label": "Original View"},
        null,
        {"id": "Quality"},
        {"id": "Pause"},
        {"id": "Mute"},
        null,
        {"id": "Find", "label": "Find..."},
        {"id": "FindAgain", "label": "Find Again"},
        {"id": "Copy"},
        {"id": "CopyAgain", "label": "Copy Again"},
        {"id": "CopySVG", "label": "Copy SVG"},
        {"id": "ViewSVG", "label": "View SVG"},
        {"id": "ViewSource", "label": "View Source"},
        {"id": "SaveAs", "label": "Save As"},
        null,
        {"id": "Help"},
        {"id": "About", "label": "About Adobe CVG Viewer..."}
    ]
}}

json.menu.items[1].label; // Open new
json.menu.items[18].id; // SaveAs
json.menu.items[10]; // null
Si ! , lo que quiero cojer es : por ejemplo : EL id más/menos grande, selecciono el id pero muestro el nombre , tonterias de esta , estoy haciendo el bicing.json de barcelona , y quiero moverme por los nodos como si fuera XPATH , pero no se exactamente como hacerlo .

xpath es facil : /nodo[resticcióin]/nombre
JSON He visto .nodo[?(restricción)].nombre (No me funciona)
http://goessner.net/articles/JsonPath/

Que no digo que no se pueda en "C" "ajax" "XPATH".....

Como consigo los nodos que quiero ?

Espero explicarme correctamente
  #6 (permalink)  
Antiguo 30/04/2012, 10:21
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No entiendo como hacerlo JSON-Javascript

según veo, estás mezclando algunos conceptos. JSONPath no es algo nativo de javascript ni es un estándar [1]. hay una forma nativa de XPath para javascript, pero es en base a una extensión de javascript. es decir, E4X (ecmascript for xml) [2]. desgraciadamente el soporte de los navegadores para E4X no es amplio y según hasta la fecha solo firefox tiene suporte. fíjate el ejemplo de la wikipedia muestra un código parecido al JSONPath. el JSONPath es una pequeña librería para accesar los campos de una forma parecida a XPath. si lees la sección de la implementación [3] debes ver como se utiliza. tienes que descargar la libreria y hacer el query a traves de la función.

[1] - https://developer.mozilla.org/en/JSON/JSONPath
[2] - http://en.wikipedia.org/wiki/ECMAScript_for_XML
[3] - http://goessner.net/articles/JsonPath/index.html#e4
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 30/04/2012, 12:13
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: No entiendo como hacerlo JSON-Javascript

Cita:
Iniciado por zerokilled Ver Mensaje
según veo, estás mezclando algunos conceptos. JSONPath no es algo nativo de javascript ni es un estándar [1]. hay una forma nativa de XPath para javascript, pero es en base a una extensión de javascript. es decir, E4X (ecmascript for xml) [2]. desgraciadamente el soporte de los navegadores para E4X no es amplio y según hasta la fecha solo firefox tiene suporte. fíjate el ejemplo de la wikipedia muestra un código parecido al JSONPath. el JSONPath es una pequeña librería para accesar los campos de una forma parecida a XPath. si lees la sección de la implementación [3] debes ver como se utiliza. tienes que descargar la libreria y hacer el query a traves de la función.

[1] - [url]https://developer.mozilla.org/en/JSON/JSONPath[/url]
[2] - [url]http://en.wikipedia.org/wiki/ECMAScript_for_XML[/url]
[3] - [url]http://goessner.net/articles/JsonPath/index.html#e4[/url]


Como dices JSONPath no es algo nativo , entonces lo puedo hacer sin JSONPath ?

Son como consultas(query)

Esto parece interesante : ---------------- http://jsonselect.org/#tryit --------------------------------------- pero tampoco me funciona :)

Alguna ayuda de como hacerlo ?

Última edición por drakgoku1; 30/04/2012 a las 12:19
  #8 (permalink)  
Antiguo 30/04/2012, 12:23
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: No entiendo como hacerlo JSON-Javascript

Lo que tengo es :

<html>
<head>
<script type="text/javascript">

var JSONObject =
[{"id":"0","name":"1 - Gran Via Corts Catalanes, 760","lat":"41397952","lng":"2180042","timestamp": "2012-04-29 14:03:11.118561","bikes":9,"free":13},............ ......}]
</script>

</head>

<body>
<h2 align="center"> Bikes </h2>


<script type="text/javascript">
document.write("<ul>");

for(var i in JSONObject){
var cad = "<p>" +

JSONObject[i].id + " . " +
JSONObject[i].name + " , " +
JSONObject[i].lat+ " , " +
JSONObject[i].lng + " , " +
JSONObject[i].timestamp + " , " +
JSONObject[i].bikes + " , " +
JSONObject[i].free + " . " +
"</p>";
document.write("<li>" + cad + "</li>");
}
document.write("</ul>");
</script>



</body>
</html>



Y visualizo bien toda la información, pero no se sacar la información que quiero .
Como dije anteriormente " EL id más/menos grande, selecciono el id pero muestro el nombre"
  #9 (permalink)  
Antiguo 30/04/2012, 15:57
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No entiendo como hacerlo JSON-Javascript

Cita:
, entonces lo puedo hacer sin JSONPath ?
tu puedes sacar cualquier información de un JSON pero no con una sintaxis similar a XPath, a menos que estés usando E4X. honestamente no comprendo cuál es la información que quieres obtener. tal como lo tienes estás iterando el array e imprimiendo cada propiedad del objeto. esta línea me confunde, no se que quieres decir... "EL id más/menos grande, selecciono el id pero muestro el nombre".


@edit
he releido todo el tema y no se si finalmente comprendí. ¿tu quieres seleccionar un objeto de todos ellos según una condición? por ejemplo, obtener el objeto que tenga el valor más alto en el campo id. si es eso lo que intentas hacer, entonces tienes que recorrer primero por todos los elementos del array para determinar cual de ellos contiene el id más alto. pero en mi opinión eso sería un proceso un tanto costoso. es más fácil si ordenas el array según el valor del campo. básicamente utilizas el método sort y le pasas una función que recibe dos argumentos. estos argumentos serán los objetos del array. en el cuerpo de la función realizas la operación en base al campo. finalmente, en un extremo del array tienes el objeto con el id mas alto y en el otro extremo el objeto con el id mas bajo.

Código:
array.sort(function(a,b){
return a.id - b.id;
});
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 30/04/2012 a las 16:14
  #10 (permalink)  
Antiguo 01/05/2012, 02:07
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: No entiendo como hacerlo JSON-Javascript

Cita:
Iniciado por zerokilled Ver Mensaje
tu puedes sacar cualquier información de un JSON pero no con una sintaxis similar a XPath, a menos que estés usando E4X. honestamente no comprendo cuál es la información que quieres obtener. tal como lo tienes estás iterando el array e imprimiendo cada propiedad del objeto. esta línea me confunde, no se que quieres decir... "EL id más/menos grande, selecciono el id pero muestro el nombre".


@edit
he releido todo el tema y no se si finalmente comprendí. ¿tu quieres seleccionar un objeto de todos ellos según una condición? por ejemplo, obtener el objeto que tenga el valor más alto en el campo id. si es eso lo que intentas hacer, entonces tienes que recorrer primero por todos los elementos del array para determinar cual de ellos contiene el id más alto. pero en mi opinión eso sería un proceso un tanto costoso. es más fácil si ordenas el array según el valor del campo. básicamente utilizas el método sort y le pasas una función que recibe dos argumentos. estos argumentos serán los objetos del array. en el cuerpo de la función realizas la operación en base al campo. finalmente, en un extremo del array tienes el objeto con el id mas alto y en el otro extremo el objeto con el id mas bajo.

Código:
array.sort(function(a,b){
return a.id - b.id;
});
Correcto !! :) vaya me explico como un libro cerrado

Tengo estas preguntas :

¿Cuál es la estación que tiene más bicicletas disponibles en BCN?
¿Cuál es la estación que tiene más slots libres para disponer bicicletas?
Dadas unas coordenadas (longitud, latitud), devuelve cuál es la dirección de la estación que tendrías más cerca. Puedes crear un formulario que recoja esta información.

Y claro si le paso con ese sort no creo que pueda hacer mucho :)

Como dije estoy haciendo bicing.json .

Con el sort lo podré hacer igual ? :)
  #11 (permalink)  
Antiguo 01/05/2012, 10:27
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No entiendo como hacerlo JSON-Javascript

no se porque pero esto me suena a asignación. en todo caso ya te di dos ideas: recorrer el array e ir colectando la información que coincida con lo que buscas, u ordenar el array según los criterios. cierto que el ejemplo ordena el array por ID pero lo mismo lo puedes hacer para otros campos. eso lo tienes que indicar tú. por ejemplo, para las primeras dos preguntas puedes usar ese método aunque para el primer enunciado necesitas elaborar un poco más el procedimiento. tu podrías ordenar el array de forma que los primeros elementos sean por lugar (BNC en tu caso) y a su vez ordenar esos elementos por la cantidad de bicicletas disponibles. para el tercer enunciado se me ocurre que también puedes usar dicho método calculando la distancia entre un punto y otro y de acuerdo al resultado ordenar los elementos. de modo que el primer elemento sea el más cerca, el próximo el que le sigue cerca y así con el resto. también puedes usar un bucle e ir computando la distancia mientras que en una variable retienes el índice del elemento que va quedando más cerca según las coordenadas dada.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #12 (permalink)  
Antiguo 01/05/2012, 10:41
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: No entiendo como hacerlo JSON-Javascript

Cita:
Iniciado por zerokilled Ver Mensaje
no se porque pero esto me suena a asignación. en todo caso ya te di dos ideas: recorrer el array e ir colectando la información que coincida con lo que buscas, u ordenar el array según los criterios. cierto que el ejemplo ordena el array por ID pero lo mismo lo puedes hacer para otros campos. eso lo tienes que indicar tú. por ejemplo, para las primeras dos preguntas puedes usar ese método aunque para el primer enunciado necesitas elaborar un poco más el procedimiento. tu podrías ordenar el array de forma que los primeros elementos sean por lugar (BNC en tu caso) y a su vez ordenar esos elementos por la cantidad de bicicletas disponibles. para el tercer enunciado se me ocurre que también puedes usar dicho método calculando la distancia entre un punto y otro y de acuerdo al resultado ordenar los elementos. de modo que el primer elemento sea el más cerca, el próximo el que le sigue cerca y así con el resto. también puedes usar un bucle e ir computando la distancia mientras que en una variable retienes el índice del elemento que va quedando más cerca según las coordenadas dada.
No creo que me salga pero gracias de todos modos. un saludo

Etiquetas: js
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:13.