2015-10-17 18 views
8

Ben KontrolörSpring MVC 4'te Boolean'ı JSON olarak döndürmek mümkün mü?

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

yılında basit bir yöntem var ve yanıt i @ResponseBody tepki JSON olacağını söylüyor { "success": true }

Annontation dönmek istiyorum. Ama şimdi de tazminat olarak ben sadece doğruyu aldım.

Nasıl çözüleceğinin başka bir yolu var mı?

Ya ben bunun için en iyi uygulamayı bilmek istiyorum

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

böyle bir şey yapmak gerekir.

cevap

16

bir ilkel tipi (veya ilkel sargı tipi) geri ve yanıt olarak JSON nesnesi elde edilemez. Bazı nesneyi, örneğin bir Map veya özel etki alanı nesnesini döndürmelisiniz.

Sorunuzda gösterilen Harita yaklaşımı mükemmel geçerlidir. İsterseniz, Collections.singletonMap() kullanarak güzel bir tek katlı içine sıkıştırın.

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

Mümkün değil. 'Başarı' değişken adı kaybolur. Bir harita kullanın veya küçük bir sarıcı sınıf oluşturun.

public class BooleanResult { 
    public boolean success; 
} 
2

Ancak, bir boolean dönmek ResponseEntities kullanmayı düşünün ve başarıyı iletişim kurmak için HTTP durum kodunu kullanamazsınız.

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

Bu yöntem boş bir belge dönecektir, ancak durum kodu kontrol edebilirsiniz

0

(YASAK sadece bir örnektir, daha sonra daha uygun durum kodu, örneğin BULUNAMADI? Seçebilir) Bunu yapmak için jsonobject kullanıyorum.

yeni JSONObject() döndürün ("sonuç", true) .toString().

İlgili konular