gpt4 book ai didi

java - Springboot API 返回空响应

转载 作者:行者123 更新时间:2023-11-29 09:27:13 25 4
gpt4 key购买 nike

我构建了一个简单的 Springboot API,它连接到包含一些测试数据的 H2 数据库。但是,当我访问 API 端点时,我得到一个空响应。

[{}]

当我调试我的应用程序时, Controller 返回的用户对象包含我期望的用户。

Debugged user object

用户 Controller .java

@RestController
@RequestMapping("api/user")
public class UserController {

private UserService userService;

public UserController(@Autowired UserService userService){
this.userService = userService;
}

@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public Set<User> getAllUsers(){
final Set<User> users = userService.getAllUsers();
return users;
}
}

用户库.java

public interface UserRepository extends CrudRepository<User, Long> {

@Query("SELECT usr from User usr")
Set<User> getAllUsers();
}

用户服务.java

public interface UserService {

Set<User> getAllUsers();
}

UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {

private final UserRepository repository;

public UserServiceImpl(@Autowired UserRepository userRepository){
this.repository = userRepository;
}

@Override
public Set<User> getAllUsers(){
final Set<User> users = repository.getAllUsers();
return users;
}
}

用户.java

@Entity
@Getter
public class User {

@Id
private Long id;
private String username;
private String firstname;
private String lastname;
private String email;
private String role;
private String premium;
}

最佳答案

您必须将 User 的类成员设置为 public 以允许 jackson 序列化它们,即

// User.java
@Entity
public class User {
@Id
public Long id;
public String username;
public String firstname;
public String lastname;
public String email;
public String role;
public String premium;
}

注意:如果您不想序列化某个字段,请使用@JsonIgnore 而不是将其设置为私有(private),例如<​​/p>

@Entity
public class User {
...
@JsonIgnore
public String role;
...
}

关于java - Springboot API 返回空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49895002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com