我正在从 Spring Boot Controller (1.5.16.RELEASE) 返回 org.json JSONObject。我在其中获得了一个额外的 map 对象。
我的代码-
@GetMapping(value = Constants.API_LOGIN)
public Object login(@RequestParam String userName, @RequestParam String password) throws JSONException {
UserAuth userAuth = new UserAuth();
UserAuth user = null;
try {
Preconditions.checkArgument(!Strings.isNullOrEmpty(userName), "empty UserName");
Preconditions.checkArgument(!Strings.isNullOrEmpty(password), "empty password");
userAuth.setUserName(userName);
userAuth.setPassword(password);
user = authService.checkAuth(userAuth);
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
JSONObject json = new JSONObject();
if (user != null) {
json.put("status", true);
json.put("message", "login success");
return ResponseEntity.status(HttpStatus.OK).body(json);
} else {
json.put("status", false);
json.put("message", "username or password doesnt match");
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(json);
}
}
pom.xml
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
预期 Json
{
"message": "login success",
"status": true
}
我正在获取 JSON
{
"map": {
"message": "login success",
"status": true
}
}
我不知道为什么我在 JSONObject 中得到额外的 map 对象。
最佳答案
我认为问题在于默认的 Springboot JSON 序列化器是 Jackson,它不知道如何处理 JSONObject
所以它把它包装成 Map<String, Object>
其中关键是 map
该值是您的 JSONObject
。
在你的情况下,只使用 map 会简单得多:
@GetMapping(value = Constants.API_LOGIN)
public ResponseEntity<Object> login(@RequestParam String userName, @RequestParam String password) throws JSONException {
.....
Map<String, Object> json = new HashMap<>();
json.put("status", true);
json.put("message", "login success");
return ResponseEntity.status(HttpStatus.OK).body(json);
}
或者我猜另一种解决方案是简单地返回一个字符串棒 json.toString
在体内
@GetMapping(value = Constants.API_LOGIN)
public String login(@RequestParam String userName, @RequestParam String password) throws JSONException {
....
JSONObject json = new JSONObject();
json.put("status", true);
json.put("message", "login success");
return ResponseEntity.status(HttpStatus.OK).body(json.toString());
}
关于java - org.json JSONObject 在从 Spring Boot Controller 返回时向 JSONObject 添加额外的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52774735/