[英]How to convert ObjectNode to Java POJO and Java POJO to JsonNode?
我有一个 controller 接受ObjectNode
作为@RequestBody
。
该ObjectNode
代表json
以及一些用户数据
{
"given_name":"ana",
"family_name": "fabry",
"email": "fabry@gmail.com",
"password": "mypass",
"gender": "FEMALE"
}
Controller.java
@PostMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public JsonNode createUser(@RequestBody ObjectNode user){
return userService.addUser(user);
}
我想让用户作为ObjectNode
将其转换为 Java POJO 将其保存到数据库并再次将其作为JsonNode
返回。
UserServiceImpl.java
private final UserRepository userRepository;
private final UserMapper userMapper;
@Override
public JsonNode addUser(@RequestBody ObjectNode user) {
try {
return userMapper.fromJson(user)
.map(r -> {
final User created = userRepository.save(r);
return created;
})
.map(userMapper::asJson)
.orElseThrow(() -> new ResourceNotFoundException("Unable to find user"));
} catch (RuntimeException re) {
throw re;
}
}
如何将 ObjetcNode 转换为 POJO?
我尝试过这样的事情:
public Optional<User> fromJson(ObjectNode jsonUser) {
User user = objectMapper.treeToValue(jsonUser, User.class);
}
但是.treeToValue
下划线是 read 说:
Add exception to method signature.
这甚至是正确的做法吗?
用户.java
@Builder
@AllArgsConstructor
public class User {
@Indexed(unique = true)
public final String email;
public final String password;
public final String firstName;
public final String lastName;
public final Gender gender;
public final Instant registrationTime;
public static User createUser(
String email,
String password,
String firstName,
String lastName,
Gender gender,
Instant registrationTime){
return new User(email, password, firstName, lastName, gender, registrationTime);
}
}
.treeToValue
是正确的方法。 您得到的编译器错误是因为该方法抛出了一个已检查的异常,您需要重新抛出或处理该异常。 有关已检查异常的更多信息,请参见此处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.