我在请求正文中发布带有转义字符的json字符串,并将其映射到控制器中的模型,但它抛出异常以下
json字符串:“ {\” id \“:\” 1 \“,\” desc \“:\” test \“}}”异常“无法
Entity
的构造实例(尽管至少存在一个Creator):没有要从中反序列化的String-argument构造函数/工厂方法[源:(String)“处的字符串值('{” id“:” 1“,” desc“:” test“}')“ {\” id \“:\” 1 \“,\” desc \“:\” test \“}”“;行:2,列:2]”
但是当我使用带有转义字符的json字符串时,它可以正常工作json字符串
{"id":"1","desc":"test"}
模型
class Entity
{
@Id
String id ;
Map<String, Object> dynamicFields = new LinkedHashMap<>();
@JsonAnySetter
void setDetail(String key, Object value) {
dynamicFields.put(key, value);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Map<String, Object> getDynamicFields() {
return dynamicFields;
}
public void setDynamicFields(Map<String, Object> dynamicFields) {
this.dynamicFields = dynamicFields;
}
和下面是控制器发布方法
@PostMapping("")
ResponseEntity<Entity> create(@RequestBody String jsonString) throws JsonParseException,
JsonMappingException, IOException {
objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
Entity mongoStoredEnity = objectMapper.readValue(jsonString, Entity.class);
//rest of the code ....
}
关于此的任何线索,为什么它只接受不包含转义字符的json字符串?
尝试用以下代码替换反斜杠。
String jsonFormattedString = jsonString.replaceAll("\\\\", "");
然后将其传递给对象映射器