com.fasterxml.jackson.databind.exc.MismatchedInputException:

问题描述 投票:0回答:1

我在请求正文中发布带有转义字符的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字符串?

java spring-boot jackson objectmapper
1个回答
0
投票

尝试用以下代码替换反斜杠。

String jsonFormattedString = jsonString.replaceAll("\\\\", "");

然后将其传递给对象映射器

© www.soinside.com 2019 - 2024. All rights reserved.