Affichage tableau JSON à l'aide d'Ajax et d'analyser dans le servlet utilisant Gson
Je suis nouveau sur Java et bloqué avec ce problème. Je suis en train de construire un tableau en JavaScript qui ressemble à ceci
var jsonObj = [];
jsonObj.push(
{
Effect: "Deny",
RuleID: "Rule1"
},
{
Effect: "Deny",
RuleID: "Rule2"
},
{
Effect: "Deny",
RuleID: "Rule3"
},....
)
Après cela, je suis en la transmettant à servlet utilisant Ajax:
jQuery.ajax({
url: "http://localhost:8080/PolicyConsumerServlet/PolicyServlet",
dataType: "json",
type: 'POST',
data: {jsondata : JSON.stringify(jsonObj)},
contentType: 'application/json',
mimeType: 'application/json',
success: function(data) {
alert('Hi');
},
error: function(jqXHR, textStatus, errorThrown) {
alert("error occurred");
}
});
Dans le servlet, dans doPost
méthode que j'ai écrit ci-dessous le code
StringBuffer jb = new StringBuffer();
String line = null;
BufferedReader reader = request.getReader();
RequestMaker.requestProcess();
while ((line = reader.readLine()) != null)
jb.append(line);
String jsonstring = jb.toString();
Gson gson = new Gson();
Wrapper[] data = gson.fromJson(jsonstring, Wrapper[].class);
System.out.println(jb);
et classe Wrapper est
public class Wrapper {
String Effect;
String RuleID;
}
Mais c'est jeter de l'exception au-dessous de la ligne
Wrapper [] data = gson.fromJson(jsonstring, Wrapper[].class);
Ce qui est mauvais dans le parsing JSON?
Essayez d'ajouter un haut niveau de " key " pour le JSON que vous créez en JavaScript. par exemple,
Mais quel est le problème avec cette approche?
Les Servlets n'est pas mon domaine. Mais JSON, par définition, se doit de suivre une valeur-clé de la structure. Par conséquent, la suggestion.
{"data" : [..values]}
Mais quel est le problème avec cette approche?
Les Servlets n'est pas mon domaine. Mais JSON, par définition, se doit de suivre une valeur-clé de la structure. Par conséquent, la suggestion.
OriginalL'auteur Ashes | 2013-11-21
Vous devez vous connecter pour publier un commentaire.
Simplement, la chaîne que vous êtes de passage à la servlet n'est pas un JSON valide.
Vous êtes de passage à un tableau de l'Emballage, mais dans un tableau JSON est fermée par crochet. Par ailleurs, le générique de la suppression, vous devez utiliser un
TypeToken
.Je vous fournir un exemple qui montre la bonne JSON pour vous cas et comment l'analyser. Il ne sera pas difficile pour vous de copier et de coller la partie pertinente dans votre code. Vous pouvez coller directement mon exemple en vous IDE de le voir fonctionner.
et c'est la console résultat:
OriginalL'auteur giampaolo
Je crois que jQuery.ajax() de l'API stipule que les données doivent être converties en une chaîne de requête à l'aide de jQuery.param() et également le type de contenu doivent être 'application/x-www-form-urlencoded'
L'argument données, les données sont envoyées au serveur. Il est converti en une chaîne de requête
dans ce cas, les données est le paramètre de chaîne de requête de l'url.
Dans le servlet vous pouvez l'obtenir à partir d'rquest paramater, pas de lecteur.
Si vous voulez obtenir des données à partir d'inputStream ou BufferedReader alors vous obtiendrez les données de servlet comme indiqué ci-dessous
Ici est firebug photo d'écran de la court
Si vous souhaitez obtenir des données à partir du lecteur de l'objet dans le servlet ensuite, vous devrez changer appel ajax données facultatives prameters comme
//Pas celui-ci
Votre appel ajax est comme ça
type de données argument spécifie le type de données provenant du serveur de json, vous devez définir le type de contenu dans le servlet
Vous pouvez envoyer la réponse json sur le stream que
OriginalL'auteur Asif Bhutto