Java 如何在Spring中返回Db保存的JSON的ID

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

我正在为JSON教程构建一个示例应用程序。 发布JSON对象(描述和日期)后,应在数据库中自动生成ID。 如何将此ID作为JSON响应中的唯一字段

@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;
    }