IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

comment lire un string ? conversion string en json


Sujet :

Spring Java

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut comment lire un string ? conversion string en json
    bonjour,

    je récupère un numéro de clé primaire et une chaîne de caractère afin de rechercher son objet de l'insérer dans la base de donnée.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        @RequestMapping(value="/new-matiere", method=RequestMethod.POST)
        private void recup( @RequestBody String publication) {
     
            System.out.println("enregistre la nouvelle matiere qui appartient à sommaire id "+publication);   
           System.out.println("enregistre la nouvelle matiere qui appartient à sommaire id "+publication);
        }

    voici ce que j'obtient après la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    enregistre la nouvelle matiere qui appartient à sommaire id {"matiere":"boot","id":1}
    comment je dois procéder avec Java pour avoir facilement le numéro id ?
    j'ai tenté directement ceci mais évidemment cela ne fonctionne pas ?
    j'ai essaye de créer une class Menu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class Menu {
        private String matiere = "novueau menu";
        private int id = 0;
    }
    et de récupérer mes donnée comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
        @RequestMapping(value = "/new-matiere", method = RequestMethod.POST)
        private void recup(@RequestBody String publication) {
            ObjectMapper objectMapper = new ObjectMapper();
     
            try {
                Menu menu = objectMapper.readValue(publication, Menu.class);
     
            } catch (IOException e) {
                e.printStackTrace();
            }
     
            System.out.println("enregistre la nouvelle matiere qui appartient à sommaire id " + publication);
     
        }
    je me retrouve avec une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "matiere" (class ohkod.sklt.entities.Menu), not marked as ignorable (0 known properties: ])
     at [Source: (String)"{"matiere":"boot","id":1}"; line: 1, column: 13] (through reference chain: ohkod.sklt.entities.Menu["matiere"])
    comment je dois faire pour récupérer facilement le numéro id ?

    merci de vos réponse

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjout,

    Ajoute les getter et setter sur la classe Menu.
    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void recup(@RequestBody Menu publication) {
    A+.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Merci, oui effectivement j'ai oublié de mettre des getters... j'ai pas encore pris l'habitude


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    @RestController
    public class MenuRestService {
     
        @RequestMapping(value = "/new-matiere", method = RequestMethod.POST)
        private void recup(@RequestBody String publication) {
     
            ObjectMapper objectMapper = new ObjectMapper();
     
            try {
     
               Menu menu = objectMapper.readValue(publication, Menu.class);
     
                System.out.println(menu.getIdSommaire()+"<===");
     
            } catch (IOException e) {
                e.printStackTrace();
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @Data @NoArgsConstructor @AllArgsConstructor @ToString
     
    public class Menu {
        private String matiere = "novueau menu";
        private int idSommaire = 0;
    }

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Re,

    Inutile d'utiliser un ObjectMapper, spring peut le faire pour toi. Ça ne sert à rien aussi de mettre la méthode du RequestMapping en private, au contraire, si t'auras besoin d'un AOP pour des interceptions, ça ne fonctionne que pour les méthodes publique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @RequestMapping(value = "/new-matiere", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
        public void recup(@RequestBody Menu publication) {
    Coté client, tu mets le header "Content-Type: application/json". @RequestMapping a aussi l'attribut produces qui devrait correspondre avec le header "accept" de la requête sur le retour attendu.

    A+.

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    ok, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 29/05/2011, 11h55
  2. Réponses: 3
    Dernier message: 10/09/2009, 16h24
  3. Comment definir un string java en c++
    Par chelguera dans le forum C++
    Réponses: 13
    Dernier message: 31/12/2004, 12h56
  4. Comment sauver plusieurs String ?
    Par Speed41 dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2004, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo