2016-09-09 1 views
0

Ich benutze Federmvc und hier ist mein Service.Nein Konverter für Rückgabetyp JSONObject

@RequestMapping(value="/data/{id}",method=RequestMethod.POST) 
    @ResponseBody 
    public JSONObject data(@PathVariable Long id ,@RequestBody Long Intake) { 
     JSONObject obj = new JSONObject(); 
     obj.put("test", false); 
      System.out.equals(obj); 
      return obj; 
    } 

und es wirft den Fehler wie:

java.lang.IllegalArgumentException: No converter found for return value of type: class org.json.JSONObject 

Ich habe viele Links überprüft mich zeigte, dass die Getter/Setter sein kann fehlen oder die @ResponseBody Anmerkung ist missing.so ich dies lief Code ohne die Notwendigkeit von Getter/Setter, aber zeigt mir immer noch diesen Fehler.

ich habe diese Abhängigkeit auch importiert.

import org.json.*; 

Irgendwelche Gedanken zu diesem Thema ??

+0

Sie String aus Methode zurückgeben kann 'obj.toString()' http://stackoverflow.com/questions/18972013/jsonobject-alternative-in-spring-and-jackson –

+0

Mögliche Duplikat: http://stackoverflow.com/questions/37380913/spring-restful-webservice-returning-json-without-model-object Ich habe dort eine Antwort geschrieben, die auch Ihre Bedürfnisse befriedigen wird. – itachi

+0

@VladBochenin 'toString()' ist ein bisschen barbarisch, weil es die nützlichen Algorithmen und Einstellungen von Jackson leicht umgeht. Ich bin mir auch nicht sicher, ob der "Response-Type" nach dem Zurückgeben einer nackten Zeichenfolge auf "application/json" gesetzt wird, muss überprüft werden. 'toMap()' ist eine bessere Wahl. – itachi

Antwort

0

1 - Versuchen Sie, jackson in Ihrem Projekt hinzuzufügen (falls noch nicht deklariert).

Oder 2 - Rückgabe String mit ObjectMapper Serialisierung.

@RequestMapping(value="/data/{id}",method=RequestMethod.POST) 
@ResponseBody 
public String data(@PathVariable Long id ,@RequestBody Long Intake) { 
    ObjectMapper obj = new ObjectMapper(); 

    Map<String, Object> map = new HashMap<>(); 
    map.put("test", false); 

    return obj.writeValueAsString(map); 
} 
+0

1-jackson wird hinzugefügt und deklariert too.2-das funktioniert nicht.giving "Unhandled Ausnahme Typ JsonProcessingException" bei obj.writeValueAsString (map); –

+0

BTW ich möchte String nicht zurückgeben. Ich brauche Json-Objekt, um zurückzukehren –

+0

Haben Sie es versucht? \t @RequestMapping (value = "/ data/{id}", method = RequestMethod.POST) \t @ResponseBody \t public String-Daten (@PathVariable Lange id, @ RequestBody Lange Intake) { \t \t try { \t \t ObjectMapper obj = neuer ObjectMapper(); \t \t JSONObject obj = new JSONObject(); \t obj.put ("test", false); \t System.out.equals (Obj); \t \t \t Rückgabe obj.writeValueAsString (obj); \t \t \t \t \t} catch (JsonProcessingException e) { \t \t \t // TODO \t \t} \t} – adyjr