我需要使用jsonpatch方法修补一个对象,但是它不能接受json中的对象,所以我应该传递一个字符串名称,然后通过从存储库获取该名称,对主数据应用更新。请看一下主要数据:
{
"_id": {
"$oid": "6017453294aa2208ca4f723c"
},
"title": "News 1",
"tag": {
"$ref": "tag",
"$id": {
"$oid": "5f0e178f57143f5447e966f7"
}
}
}
在上面的示例中,我需要使用jsonpatch更新标记,代码如下:
[
{ "op": "replace", "path": "/tag", "value": "xxxxxxxxxxxxxxxxxxxxx" }
]
但这个请求的结果是:
00 internal\u server\u error“无法构造的示例” com.test.domain.Tag
(尽管至少存在一个创建者):在[source:unknown;行:-1,列:-1](通过引用链:com.test.domain.news[“tag”])“;嵌套异常为com.fasterxml.jackson.databind.exc.missmatchdinputException:无法构造的示例 com.test.domain.Tag
(尽管至少存在一个创建者):在[source:unknown;行:-1,列:-1](通过引用链:com.test.domain.news[“tag”])
您可以在下面看到所需部分的代码:
news.java(域):
public class News implements Serializable {
@Id
private String id;
private String title;
@DBRef
private Tag tag;
}
newservice.java(要在何处应用json修补程序):
News news = newsRepository.findOne(predicate).orElseThrow(() -> new NewsNotFoundException(id));
var patchedNews = jsonPatch.apply(objectMapper.convertValue(news, JsonNode.class));
news = objectMapper.treeToValue(patchedNews, News.class);
news = newsRepository.save(news);
return newsMapper.toDto(news);
暂无答案!
目前还没有任何答案,快来回答吧!