J'ai un exemple de RestController dans Spring Boot :
@RestController
@RequestMapping("/api")
class MyRestController
{
@GetMapping(path = "/hello")
public JSONObject sayHello()
{
return new JSONObject("{'aa':'bb'}");
}
}
J'utilise la bibliothèque JSON org.json
Quand j'ai touché l'API /hello
j'obtiens une exception disant :
Servlet.service() pour la servlet [dispatcherServlet] dans le contexte avec le chemin d'accès [] a généré une exception [Le traitement de la demande a échoué ; l'exception imbriquée est la suivante java.lang.IllegalArgumentException : Aucun convertisseur trouvé pour le retour de type : class org.json.JSONObject] avec comme cause première
java.lang.IllegalArgumentException : Aucun convertisseur trouvé pour le retour de type : class org.json.JSONObject
Quel est le problème ? Quelqu'un peut-il expliquer ce qui se passe exactement ?
0 votes
Jackson ne peut pas convertir JSONObject en json.
0 votes
Ok, je comprends ça. Que peut-on faire pour réparer cela ?
1 votes
Je veux que la réponse soit construite à la volée. Je ne veux pas créer de classes spécifiques pour chaque réponse.
2 votes
Il serait peut-être préférable que votre méthode renvoie simplement un String. En outre, vous pouvez également ajouter l'annotation @ResponseBody à la méthode, ce qui permettra de traiter votre réponse comme demandé :-)
@GetMapping(path = "/hello") @ResponseBody public String sayHello() {return"{'aa':'bb'}";}
0 votes
@vegaasen, pouvez-vous nous en dire plus sur ResponseBody ?
0 votes
Pour toute personne cherchant à cartographier des objets dynamiques, cette information a été utile. baeldung.com/jackson-mapping-dynamic-object