我正在尝试从一个简单的 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