Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/03/2011, 17h56   #1
Membre éclairé
 
Avatar de natoine
 
Homme Antoine
Chercheur en informatique
Inscription : décembre 2007
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme Antoine
Âge : 27
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Chercheur en informatique

Informations forums :
Inscription : décembre 2007
Messages : 393
Points : 306
Points : 306
Par défaut JSON mal formé

j'essaye de récupérer du JSON et de le parser et j'ai une erreur.

Code :
1
2
3
 
tags = "{\"liste\":[{\"id\":10354691,\"label\":\"sceptique\"},{\"id\":10354692,\"label\":\"indifférent\"},{\"id\":10354693,\"label\":\"furieux\"},{\"id\":10354694,\"label\":\"satisfait\"},{\"id\":10354688,\"label\":\"je suis d'accord\"},{\"id\":10354689,\"label\":\"je ne suis pas d'accord\"},{\"id\":10354690,\"label\":\"je m'interroge\"}]}";//$.getJSON("http://localhost:8080/PortletAnnotation-1.0.0/ServletTag?type=tag");
jsonTags = eval(tags);
Me renvoie en console d'erreur :
Citation:
invalid label
Et alors si je tente de récupérere ce JSON sur une ressource distante via jquery, là j'ai une autre erreur :
Citation:
mal formé
pour le code suivant :

Code :
1
2
3
 
tags = $.getJSON("http://localhost:8080/PortletAnnotation-1.0.0/ServletTag?type=mood");
jsonTags = eval(tags);
Je vois pas en quoi mon json est mal formé...
http://localhost:8080/PortletAnnotat...tTag?type=mood me renvoie exactement : {"liste":[{"id":10354691,"label":"sceptique"},{"id":10354692,"label":"indifférent"},{"id":10354693,"label":"furieux"},{"id":10354694,"label":"satisfait"},{"id":10354688,"label":"je suis d'accord"},{"id":10354689,"label":"je ne suis pas d'accord"},{"id":10354690,"label":"je m'interroge"}]}
__________________
www.natoine.fr
natoine.developpez.com
Principalement du Java avec un soupçon de réseaux sociaux.
natoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 18h11   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Code :
jsonTags = eval("'"+tags+"'");
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 18h42   #3
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 854
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 854
Points : 1 354
Points : 1 354
une idée (pas sûr que ce soit ça) :
les apostrophes de d'accord et de m'interroge

edit: je pense que c'est le mot clé label qui pose problème ! si tu veux le conserver ne mets pas de guillemets autour :

var json = '{label:2}';
au lieu de
var json = '{"label":2}';

Willpower est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 19h33   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Note à moi

c'est pas "'" c'est des parenthèses
Code :
1
2
3
4
tags = "{\"liste\":[{\"id\":10354691,\"label\":\"sceptique\"},{\"id\":10354692,\"label\":\"indifférent\"},{\"id\":10354693,\"label\":\"furieux\"},{\"id\":10354694,\"label\":\"satisfait\"},{\"id\":10354688,\"label\":\"je suis d'accord\"},{\"id\":10354689,\"label\":\"je ne suis pas d'accord\"},{\"id\":10354690,\"label\":\"je m'interroge\"}]}";jsontag=eval('('+tags+')')
jsontag=eval('('+tags+')')
 
alert(jsontag.liste[2].id + " : " +jsontag.liste[2].label)
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 20h22   #5
Membre éclairé
 
Avatar de natoine
 
Homme Antoine
Chercheur en informatique
Inscription : décembre 2007
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme Antoine
Âge : 27
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Chercheur en informatique

Informations forums :
Inscription : décembre 2007
Messages : 393
Points : 306
Points : 306
Merci pour votre aide.
La correction de SpaceFrog est bonne.
Ca marche nickel pour le cas ou je ne passe pas par $.getJSON
Par contre ça ne marche pas dans le cas de $.getJSON mais ça doit être un problème de " quelque part qui ne sont pas antislashées.

Je génére mon JSON en java via un org.json.JSONObject.
__________________
www.natoine.fr
natoine.developpez.com
Principalement du Java avec un soupçon de réseaux sociaux.
natoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 20h33   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Tu es sous IE ?
essaye :
https://github.com/douglascrockford/...aster/json2.js
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 20h40   #7
Membre éclairé
 
Avatar de natoine
 
Homme Antoine
Chercheur en informatique
Inscription : décembre 2007
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme Antoine
Âge : 27
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Chercheur en informatique

Informations forums :
Inscription : décembre 2007
Messages : 393
Points : 306
Points : 306
Non je suis sour firefox mais je ne vois pas trop ce que ça change dans mon cas ...
__________________
www.natoine.fr
natoine.developpez.com
Principalement du Java avec un soupçon de réseaux sociaux.
natoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 20h48   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
ton $ c'est prototype ou jquery ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 20h58   #9
Membre éclairé
 
Avatar de natoine
 
Homme Antoine
Chercheur en informatique
Inscription : décembre 2007
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme Antoine
Âge : 27
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Chercheur en informatique

Informations forums :
Inscription : décembre 2007
Messages : 393
Points : 306
Points : 306
jquery
__________________
www.natoine.fr
natoine.developpez.com
Principalement du Java avec un soupçon de réseaux sociaux.
natoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 21h10   #10
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
le get json fonctionnera si ton string json est correctement formaté coté serveur

genre
Code :
1
2
3
4
5
{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}
donc sans les \"
le plus simple est encore de faire un json encode à partir d'un array coté php
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 01h06   #11
Membre éclairé
 
Avatar de natoine
 
Homme Antoine
Chercheur en informatique
Inscription : décembre 2007
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme Antoine
Âge : 27
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Chercheur en informatique

Informations forums :
Inscription : décembre 2007
Messages : 393
Points : 306
Points : 306
Voilà le code exact de ma servlet :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
package fr.natoine.servletTag;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
 
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import fr.natoine.controler.annotation.DAOTag;
import fr.natoine.model_annotation.Tag;
 
public class ServletTag extends HttpServlet
{
	private static DAOTag daoTag = null ;
	private static EntityManagerFactory emf_annotation = null ;
 
	/**
     * @see HttpServlet#HttpServlet()
     */
    public ServletTag() 
    {
        super();
        emf_annotation = Persistence.createEntityManagerFactory("annotation");
        daoTag = new DAOTag(emf_annotation);
    }
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
    	toDo(request , response);
    }
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
    	toDo(request, response);
    }
 
    private void toDo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
    	if(request.getParameter("type")!=null)
    	{
    		String type = request.getParameter("type") ;
    		List<Tag> tags = null;
    		if(type.equalsIgnoreCase("tag"))
    			tags = daoTag.retrieveAllTag();
    		else if(type.equalsIgnoreCase("judgment"))
    			tags = daoTag.retrieveAllJudgment();
    		else if(type.equalsIgnoreCase("mood"))
    			tags = daoTag.retrieveAllMood();
    		else if(type.equalsIgnoreCase("domain"))
    			tags = daoTag.retrieveAllDomain();
    		if(tags != null && tags.size() > 0)
    		{
    			JSONArray jsonarray = new JSONArray();
    			for(Tag tag : tags)
    			{
    				JSONObject jsonobj = new JSONObject();
    				try 
    				{
						jsonobj.put("id", tag.getId());
						jsonobj.put("label", tag.getLabel());
	    				jsonarray.put(jsonobj);
    				}
    				catch (JSONException e) 
    				{
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
    			}
    			JSONObject list_obj = new JSONObject();
    			try 
    			{
					list_obj.put("liste", jsonarray);
				} catch (JSONException e) 
				{
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				response.setContentType("text");
				String liste = list_obj.toString();
			PrintWriter out = response.getWriter() ;
		    	out.print(liste);
    		}
    	}
    }
}
Mon traitement javascript qui appelle ma servlet avec un getJSON :
Code :
1
2
3
 
tags = $.getJSON("http://localhost:8080/PortletAnnotation-1.0.0/ServletTag?type=judgment");
jsonTags = JSON.parse(tags);
Et dans ma console d'erreur firefox j'ai : JSON.parse et mal formé qui me sort le JSON attendu.
Si je tape direct la servlet par mon navigateur j'ai bien le JSON attendu en retour :
Citation:
{"liste":[{"id":10354688,"label":"je suis d'accord"},{"id":10354689,"label":"je ne suis pas d'accord"},{"id":10354690,"label":"je m'interroge"}]}
Si j'affiche le code source, y a bien que ça qui sort aussi. Pas de html englobant ou quoique ce soit.

Je vois pas ou il est mal formé mon JSON
__________________
www.natoine.fr
natoine.developpez.com
Principalement du Java avec un soupçon de réseaux sociaux.
natoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 01h18   #12
Membre éclairé
 
Avatar de natoine
 
Homme Antoine
Chercheur en informatique
Inscription : décembre 2007
Messages : 393
Détails du profil
Informations personnelles :
Nom : Homme Antoine
Âge : 27
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Chercheur en informatique

Informations forums :
Inscription : décembre 2007
Messages : 393
Points : 306
Points : 306
AAAh le boulet.

Code :
1
2
3
4
5
6
 
tags = $.getJSON("http://localhost:8080/PortletAnnotation-1.0.0/ServletTag?type=judgment" , function(data)
					{
						alert("inside getJSON data : " + data.liste[2].id + " : " + data.liste[2].label);
					}
			);
Ca ça marche.
__________________
www.natoine.fr
natoine.developpez.com
Principalement du Java avec un soupçon de réseaux sociaux.
natoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 08h28   #13
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
oui getJson retourne direct le json, pas besoin de le parser comme tu aurais pu le faire sur un ajax

sur le success
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h57.


 
 
 
 
Partenaires

Hébergement Web