Wie zu Parsen String @RequestBody als json
Ich habe einen Endpunkt, die sollte Lesen Sie einen string-Wert als Körper.
@RestController
public class EndpointsController {
@RequestMapping( method = RequestMethod.PUT, value = "api/{myId}/name", consumes= MediaType.APPLICATION_JSON )
public String updateName( @PathVariable( MY_ID ) String myId, @RequestBody String name) {
//will be: "new name"
//instead of : newname
return myId;
}
}
Mein problem ist, dass client bezeichnen diese mit "neue Namen", die richtig ist IMHO aber der server liest diese mit Anführungszeichen, weil es nicht behandelt wird der string als json-Objekt. Wie kann ich feststellen, Jackson analysiert die Zeichenfolge (gleiche Weg, als es mit Pojos)?
Ihre
wie würden Sie wissen? seine eine Konstante 😉
bitte fügen Sie eine json-Anforderung Beispiel.
@PathVariable
nicht mit dem übereinstimmt, was Sie haben, in der URL, durch die Art und Weise.wie würden Sie wissen? seine eine Konstante 😉
bitte fügen Sie eine json-Anforderung Beispiel.
InformationsquelleAutor riddy | 2015-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Jackson als Ihre JSON-parser, können Sie einfach erklären Sie Ihre parameter mit dem Typ
TextNode
. Dies ist die Jackson-Typ darstellt JSON-strings.Können Sie dann mit seinen
asText
- Methode zum abrufen der text-Wert.Unsere API ist nun gebrochen. Es macht keinen Sinn zu ändern, alle Leistungen wie vorgeschlagen. Ich Suche für eine Globale Konfiguration der Lösung und lassen Sie Sie wissen.
Bitte klären Sie, wie sich Ihr Kommentar bezieht sich auf diese Antwort. Was ist API? Wie ist es gebrochen? Welche Dienstleistungen? Wann/wo hast schlage ich vor, ändern alle von Ihnen? Was die Globale Konfiguration? Ich verstehe wirklich nicht, dein Kommentar.
Ich bin schrecklich Leid für nicht zu erklären - wir hatten eine API (RestController) das funktionierte gut, bis eine Feder 1.4.1 boot-upgrade haben wir. Seit ein paar Dienste, die einen string-parameter sind nun plötzlich immer die Zeichenfolge mit doppelten Anführungszeichen gesetzt werden - ""Classextender"" - so wird der Wert "Classextender". Dies verursacht uns weitere Probleme im code. Ich muss zugeben, wir nicht dieses Problem beheben, indem Sie nun und haben bereits implementiert Ihre Lösung. Thnx trotzdem.
lange Zeit ist vergangen, aber wir erinnern uns, es war einfach die version aktualisieren. Wir hatten keine Zeit zu verfolgen, die spezifische änderung-set 🙁 IMHO änderung des Verhaltens einer Schnittstelle ist die gleiche wie breaking the interface Vertrag.
InformationsquelleAutor Sotirios Delimanolis