/ / Je možné na jar MVC 4 vrátiť Boolean ako JSON? - json, jar, jar-mvc, jackson

Je možné na jar MVC 4 vrátiť Boolean ako JSON? - json, jar, spring-mvc, jackson

V Controller mám jednoduchú metódu

@RequestMapping("admin")
public @ResponseBody
Boolean admin() {
Boolean success = true;
return success;
}

a ako odpoveď chcem sa vrátiť { "success": true }

Annontation @ResponseBody hovorí, že odpoveď bude JSON. Ale teraz, keď som to povedal, dostávam len pravdu.

Existuje nejaký iný spôsob, ako to vyriešiť?

Alebo by som mal niečo urobiť

@RequestMapping("admin")
public @ResponseBody
Map<String, Boolean> admin() {
Map<String, Boolean> success = new TreeMap<String, Boolean>();
success.put("success", true);
return success;
}

Chcel by som o tom vedieť najlepšie postupy.

odpovede:

18 pre odpoveď č. 1

Nemôžete vrátiť primitívny typ (alebo primitívny typ obalu) a získať objekt JSON ako odpoveď. Musíte vrátiť nejaký objekt, napríklad Map alebo objekt vlastnej domény.

Prístup Mapy zobrazený vo vašej otázke je úplne platný. Ak chcete, môžete ho skomprimovať do peknej jednoplášťovej fólie Collections.singletonMap().

@RequestMapping
@ResponseBody
public Map<String, Boolean> admin() {
return Collections.singletonMap("success", true);
}

3 pre odpoveď č. 2

Avšak boolean nemôžete vrátiť, ale zvážte použitie ResponseEntities a na komunikáciu o úspechu použite stavový kód HTTP.

public ResponseEntity<String> admin() {
if (isAdmin()) {
return new ResponseEntity<String>(HttpStatus.OK);
} else {
return new ResponseEntity<String>(HttpStatus.FORBIDDEN);
}
}

Táto metóda vráti prázdny dokument, ale môžete kontrolovať stavový kód (FORBIDDEN je iba príklad, potom si môžete zvoliť stavový kód, ktorý je vhodnejší, napr. NIE JE NADOLENÝ?)


1 pre odpoveď č. 3

Nemožné. Premenný názov „success“ sa stratí. Použite mapu alebo vytvorte malú triedu obalov.

public class BooleanResult {
public boolean success;
}

0 pre odpoveď č. 4

Používam na to jsonobject.

návrat new JSONObject (). put ("result", true) .toString ().