我正在尝试从一个简单的 ajax 对象中获取一些数据。我多次返回这样的对象,但这个给了我

GET http://localhost:8080/loggedUsers net::ERR_INCOMPLETE_CHUNKED_ENCODING

服务器上出现错误...

java.lang.StackOverflowError 
at java.lang.Exception.<init>(Exception.java:66) 
at java.io.IOException.<init>(IOException.java:58) 
at com.fasterxml.jackson.core.JsonProcessingException.<init>(JsonProcessingException.java:25) 
at com.fasterxml.jackson.core.JsonProcessingException.<init>(JsonProcessingException.java:41) 
at com.fasterxml.jackson.databind.JsonMappingException.<init>(JsonMappingException.java:251) 
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:734) 
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) 

...无数次

如果我在返回值上放置一个断点,似乎我想要的一切都在那里。而且只有 1 个用户,因此数据不多。

Controller

  @RequestMapping(value = "/loggedUsers", method = RequestMethod.GET) 
public @ResponseBody List<User> getLoggedUsers() { 
    Map<String,User> users = User.getUsers().stream().collect(Collectors.toMap(User::getUsername, Function.identity())); 
    List<User> onlineUsers = new ArrayList<>(); 
    for(String username : activeUsers.getUsers()) { 
        User user = users.get(username); 
        if(user != null) { 
            onlineUsers.add(user); 
        } 
    } 
    return onlineUsers; 
} 

AJAX

 //get loggedUsers 
$.ajax({ 
    url: '/loggedUsers', 
    type: 'get', 
    success: function (loggedUsers) { 
        console.log(loggedUsers);     
    } 
}); 

请您参考如下方法:

如果您在用户类中有对 User 的内部引用,您可以忽略该属性(例如使用 @JsonIgnore 注释)并防止堆栈溢出,有关更多详细信息:http://www.baeldung.com/jackson-ignore-properties-on-serialization


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!