如何 return Db 的 ID 保存在 JSON 中 Spring

How to return ID of Db saved JSON in Spring

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

    @JsonView(View.Summary.class)
    @PostMapping(path = "/api/object/new")
    public Object AddObjectApi(@RequestBody Map<String, String> object) {

        Object newObject = new Object(
            object.get("description"),
            LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS));

        Object savedObject = repository.save(newObject);
        savedCObject.getId();

        return savedObject;
    }

示例输入(Post JSON):

{
   "description" : "This is object description"
}

示例输出(返回 JSON 响应):

{
   "id" : "1"
}

如果您使用的是实体 class,那么您实体中的 id 列应该有这一行

@GeneratedValue(strategy = GenerationType.IDENTITY) 当您将实体 class 保存在数据库 .save 中时,将 return 保存的实体包含新生成的 ID

entity = repository.save(entity); 然后就可以得到保存在数据库中的数据的id entity.getId()

你可以创建另一个 pojo class 只有 id 可用 getter setter 和 return 你的 pojo 实例

ResponseSchema response = new ResponseSchema();
response.setId(entity.getId);

return response;

对不起我的英语。

首先,我使用 Jackson 将对象转换为 json 或相反。

创建一个代表 ure json 对象的实体。

我认为你正在使用 JPARepository

YourJsonEntity

// 开始将ureJSON转换为Entity

YourJsonEntity entity = new ObjectMapper().readValue(data, YourJsonEntity.class);

// 持久化你的对象 // 从数据库中保存 return 对象。他有一个值ID

YourJsonEntity entityFromDb = this.entityRepository.save(entity);
System.out.println(entityFromDb.getId());

我发现这是为了提取属性 JSON

String json = "{ \"color\" : \"Black\", \"type\" : \"FIAT\" }";
JsonNode jsonNode = objectMapper.readTree(json);
String color = jsonNode.get("color").asText();
// Output: color -> Black

您可以创建一个新的 class,它有一个名为 id

的字段
public class ResponseData{
   public Integer id;
   
   public ResponseData(){
   
   }

   public ResponseData(Integer id){
     this.id = id;
   }
}

然后将对象保存到数据库中后,您可以return这样的响应

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