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



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

最新更新