如何 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;
}
我正在为 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;
}