Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring控制器-HashMap返回_Java_Spring - Fatal编程技术网

Java Spring控制器-HashMap返回

Java Spring控制器-HashMap返回,java,spring,Java,Spring,我有一个非常基本的REST控制器 @RestController @CrossOrigin(origins = "*") @RequestMapping(value = "/signKey", produces = "application/json") public class SignKeyController { @Autowired private SignKeyService signKeyService; @GetMapping(value = "/generate") publ

我有一个非常基本的REST控制器

@RestController
@CrossOrigin(origins = "*")
@RequestMapping(value = "/signKey", produces = "application/json")
public class SignKeyController {

@Autowired
private SignKeyService signKeyService;

@GetMapping(value = "/generate")
public ResponseEntity<?> generateSignKey() {
    String signKeyToken = signKeyService.generateNewToken();
    Map<String, String> data = new HashMap<>();
    data.put("signKey", signKeyToken);
    return new ResponseEntity<>(data, HttpStatus.OK);
}
但是因为我想将一个json对象返回到前端,而不仅仅是一个字符串,所以我创建了一个hashmap。 这个代码很好用,但我觉得应该有更好的方法

在这种情况下,我不想创建模型或任何东西。这是一个简单的字符串返回。我真的需要继续在我的控制器中创建HashMaps,它只返回一些不在任何模型中的数据吗

有什么帮助吗?

你可以按需要做

String signKeyToken = signKeyService.generateNewToken();
DataObj data = new DataObj(signKeyToken);
return new ResponseEntity<>(data, HttpStatus.OK);



class DataObj {
    private String signKey;
    //setter,getter,constructor
}
String signKeyToken=signKeyService.generateNewToken();
DataObj数据=新的DataObj(signKeyToken);
返回新的响应属性(数据,HttpStatus.OK);
类DataObj{
私有字符串签名密钥;
//setter、getter、构造函数
}
如果这有帮助, 可以使用来放置值,而不是模型类

示例-

import org.json.simple.JSONObject;

@RestController
@CrossOrigin(origins = "*")
@RequestMapping(value = "/signKey", produces = "application/json")
public class SignKeyController {

@Autowired
private SignKeyService signKeyService;

@GetMapping(value = "/generate")
public ResponseEntity<?> generateSignKey() {
  String signKeyToken = signKeyService.generateNewToken();
  JSONObject data = new JSONObject();
  data.put("signKey", signKeyToken);
  return new ResponseEntity<>(data, HttpStatus.OK);
 }
}
import org.json.simple.JSONObject;
@RestController
@交叉原点(原点=“*”)
@RequestMapping(value=“/signKey”,products=“application/json”)
公共类签名密钥控制器{
@自动连线
私有SignKeyService SignKeyService;
@GetMapping(value=“/generate”)
公共响应生成密钥(){
字符串signKeyToken=signKeyService.generateNewToken();
JSONObject数据=新的JSONObject();
data.put(“signKey”,signKeyToken);
返回新的响应属性(数据,HttpStatus.OK);
}
}

编辑:这里是使用的链接

您所说的更好的方式是什么意思?对我来说这似乎很好,如果这个模型只针对这个控制器存在,您不需要特定的模型,但最好为序列化过程保留一些数据结构。您仍然可以编写更短的
返回新的ResponseEntity(Collections.singletonMap(“signKey”,signKeyService.generateNewToken()),HttpStatus.OK)是的,它看起来很好,并且可以使用return ResponseEntity添加到最短的内容中。好的(Collections.singletonMap(“signKey”,signKeyService.generateNewToken())在我看来很好。OP不喜欢定义数据模型:-)
import org.json.simple.JSONObject;

@RestController
@CrossOrigin(origins = "*")
@RequestMapping(value = "/signKey", produces = "application/json")
public class SignKeyController {

@Autowired
private SignKeyService signKeyService;

@GetMapping(value = "/generate")
public ResponseEntity<?> generateSignKey() {
  String signKeyToken = signKeyService.generateNewToken();
  JSONObject data = new JSONObject();
  data.put("signKey", signKeyToken);
  return new ResponseEntity<>(data, HttpStatus.OK);
 }
}