Java 如何在Spring中返回Db保存的JSON的ID
我正在为JSON教程构建一个示例应用程序。 发布JSON对象(描述和日期)后,应在数据库中自动生成ID。 如何将此ID作为JSON响应中的唯一字段Java 如何在Spring中返回Db保存的JSON的ID,java,json,spring,response,Java,Json,Spring,Response,我正在为JSON教程构建一个示例应用程序。 发布JSON对象(描述和日期)后,应在数据库中自动生成ID。 如何将此ID作为JSON响应中的唯一字段 @JsonView(View.Summary.class) @后期映射(路径=“/api/object/new”) 公共对象AddObjectApi(@RequestBody映射对象){ 对象newObject=新对象( object.get(“description”), LocalDateTime.now().truncatedTo(Chrono
@JsonView(View.Summary.class)
@后期映射(路径=“/api/object/new”)
公共对象AddObjectApi(@RequestBody映射对象){
对象newObject=新对象(
object.get(“description”),
LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS));
Object savedObject=repository.save(newObject);
savedObject.getId();
返回savedObject;
}
示例输入(Post JSON):
示例输出(返回的JSON响应):
如果您使用的是实体类,则实体中的
id
列应该有此行
@GeneratedValue(策略=GenerationType.IDENTITY)
当您在数据库中保存实体类时,save
将返回包含新生成id的已保存实体
entity=repository.save(实体)代码>
然后您可以获得保存在数据库中的数据的id
entity.getId()
您可以使用getter setter创建另一个id为vaiable的pojo类,并返回pojo实例
ResponseSchema response = new ResponseSchema();
response.setId(entity.getId);
return response;
对不起我的英语
首先,我使用Jackson将对象转换为json或相反
创建一个表示json对象的实体
我在考虑你在和JPA合作
//开始将ure JSON转换为实体
//坚持你的目标
//保存从数据库返回对象。他有一个值ID
我发现这是为了将属性提取为JSON
String json = "{ \"color\" : \"Black\", \"type\" : \"FIAT\" }";
JsonNode jsonNode = objectMapper.readTree(json);
String color = jsonNode.get("color").asText();
// Output: color -> Black
您可以创建一个新类,该类有一个名为id的字段
public class ResponseData{
public Integer id;
public ResponseData(){
}
public ResponseData(Integer id){
this.id = id;
}
}
然后在db中保存对象后,可以像这样返回响应
@PostMapping(path = "/api/object/new")
public ResponseData AddObjectApi(@RequestBody Map<String, String> object) {
Object newObject = new Object(
object.get("description"),
LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS));
Object savedObject = repository.save(newObject);
ResponseData responseData = new ResponseData(savedObject.getId());
return responseData;
}
@PostMapping(path=“/api/object/new”)
公共响应数据AddObjectApi(@RequestBody映射对象){
对象newObject=新对象(
object.get(“description”),
LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS));
Object savedObject=repository.save(newObject);
ResponseData ResponseData=新的ResponseData(savedObject.getId());
返回响应数据;
}
我正在使用实体类。您的解决方案返回的响应仅为“id”值(示例:1)。但是我需要将其作为JSON对象返回,只包含一个字段(例如:{“id”:“1”}您可以创建另一个pojo类集合id并返回pojo的实例。返回的JSON为空({})。即使对象保存在数据库中,请尝试删除@JsonView注释,并将AddObjectApi方法的返回类型更改为ResponseData,然后让我知道发生了什么。它成功了。
YourJsonEntity entityFromDb = this.entityRepository.save(entity);
System.out.println(entityFromDb.getId());
String json = "{ \"color\" : \"Black\", \"type\" : \"FIAT\" }";
JsonNode jsonNode = objectMapper.readTree(json);
String color = jsonNode.get("color").asText();
// Output: color -> Black
public class ResponseData{
public Integer id;
public ResponseData(){
}
public ResponseData(Integer id){
this.id = id;
}
}
@PostMapping(path = "/api/object/new")
public ResponseData AddObjectApi(@RequestBody Map<String, String> object) {
Object newObject = new Object(
object.get("description"),
LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS));
Object savedObject = repository.save(newObject);
ResponseData responseData = new ResponseData(savedObject.getId());
return responseData;
}