我正在为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"
}
您可以创建一个新的类,该类有一个名为id 的字段
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;
}
对不起我的英语。
首先,我使用Jackson将对象转换为json或相反。
创建一个表示ure-json对象的实体。
我正在考虑你正在使用JPAR存储
YourJson实体
//开始将ure JSON转换为实体
YourJsonEntity entity = new ObjectMapper().readValue(data, YourJsonEntity.class);
//持久化对象//Save从数据库返回对象。他有一个值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
如果使用Entity类,则实体中的id
列应具有此行
@GeneratedValue(strategy = GenerationType.IDENTITY)
当您将Entity类保存在数据库中时,.save
将返回保存的实体,其中包含新生成的id
entity = repository.save(entity);
然后您可以获得保存在数据库中的数据的identity.getId()
您可以使用getter-setter创建另一个pojo类,该类的id可用,并返回您的pojo 的实例
ResponseSchema response = new ResponseSchema();
response.setId(entity.getId);
return response;