public class ModelDTO implements Serializable {
private Long id;
private String datasetName;
@JsonRawValue
private String json;
}
邮政API是工作良好的邮递员或招摇撞骗,如果我发送以下身体。
{
"id": 1,
"datasetName": "Insurance",
"json" : "[{"ClassName":"AAAA","Fields":[["cdsa","csa"],["ca"]]},{"ClassName":"ca","Fields":[null]}]"
}
但是MockMVC测试用例在Spring引导项目中给出了以下错误
错误的请求:JSON解析错误:意外字符('C'(代码67((:应使用逗号分隔Object条目;嵌套异常为com.fasterxml.jackson.core.JsonParseException:意外字符('C'(代码67((:应使用逗号分隔对象条目在[来源:(PushbackInputStream(;行:1,列:89]
mockMvc.perform(post(ENTITY_API_URL).contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(ModelDTO))).andExpect(status().isCreated());
在我的案例中,类型定义不正确。例如
public class ModelDTO implements Serializable {
private Long id;
private String datasetName;
private String part;
}
所以我不得不将其更正为:
public class ModelDTO implements Serializable {
private Long id;
private String datasetName;
private List<String> part;
}
这解决了我的问题。
我相信您实际上并不需要@JsonRawValue
,所以请尝试删除它:
public class ModelDTO implements Serializable {
private Long id;
private String datasetName;
private String json;
}
我的json设置不正确。它需要反斜杠进行解析。我添加了额外的两个反斜杠,如"\",现在它正在工作。
private static final String DEFAULT_JSON = ""[{\"ClassName\":\"Health Aditya Birla\",\"Fields\":[[\"Insured Person's Details\",\"Gender\",\"Member ID\"],[\"Policy Details\",\"Insured Person's Details\"],[\"Premium Certificate\"]]},{\"ClassName\":\"Health Care\",\"Fields\":[[\"Details of Insured\",\"Relationship\",\"Date Of Birth\"],[\"Mobile No\"],[\"Gross Premium\",\"Goods & Services Tax\"]]}]"";
我参考了以下链接来解决这个问题。
在此处输入链接描述