web-dev-qa-db-fra.com

Analyser JSON dans Spring MVC à l'aide de Jackson JSON

Ok, donc je regarde ça depuis un petit moment maintenant et je ne suis pas plus loin. J'ai un servlet Spring MVC dont j'ai besoin pour accepter JSON à partir d'une application Web frontale JavaScript. Pour analyser le JSON, j'ai besoin d'utiliser Jackson. Je dois prendre les valeurs dans le JSON et les stocker dans une liste dans l'ordre où elles apparaissent dans le JSON. J'ai essayé d'utiliser JsonFactory avec les objets JsonParser et JsonNode, mais je peux vraiment le faire fonctionner. J'ai également essayé d'ouvrir un BufferedReader et de parcourir le corps de la demande ligne par ligne, mais encore une fois, je ne peux pas tout à fait obtenir cela non plus. J'ai examiné quelques questions connexes ici, mais jusqu'à présent, aucune n'a fonctionné pour moi.

Est-ce que n'importe qui dans le savoir pourrait m'orienter dans la bonne direction ici s'il vous plaît, une page web avec un exemple serait génial!

40
MeanwhileInHell

L'intérêt de l'utilisation d'une technologie de cartographie comme Jackson est que vous pouvez utiliser des objets (vous n'avez pas besoin d'analyser le JSON vous-même).

Définissez une classe Java qui ressemble au JSON que vous attendez.

par exemple. ce JSON:

{
"foo" : ["abc","one","two","three"],
"bar" : "true",
"baz" : "1"
}

pourrait être mappé à cette classe:

public class Fizzle{
    private List<String> foo;
    private boolean bar;
    private int baz;
    // getters and setters omitted
}

Maintenant, si vous avez une méthode Controller comme celle-ci:

@RequestMapping("somepath")
@ResponseBody
public Fozzle doSomeThing(@RequestBody Fizzle input){
    return new Fozzle(input);
}

et vous passez le JSON par le haut, Jackson créera automatiquement un objet Fizzle pour vous, et il sérialisera une vue JSON de l'objet retourné vers la réponse avec le type mime application/json.

Pour un exemple de travail complet voir ma réponse précédente .

81

J'utilise la bibliothèque json de http://json-lib.sourceforge.net/
json-lib-2.1-jdk15.jar

import net.sf.json.JSONObject;
...

public void send()
{
    //put attributes
    Map m = New HashMap();
    m.put("send_to","[email protected]");
    m.put("email_subject","this is a test email");
    m.put("email_content","test email content");

    //generate JSON Object
    JSONObject json = JSONObject.fromObject(content);
    String message = json.toString();
    ...
}

public void receive(String jsonMessage)
{
    //parse attributes
    JSONObject json = JSONObject.fromObject(jsonMessage);
    String to = (String) json.get("send_to");
    String title = (String) json.get("email_subject");
    String content = (String) json.get("email_content");
    ...
}

Plus d'exemples ici http://json-lib.sourceforge.net/usage.html

1
denny