java - 改造响应数组或对象
问题描述
在第一种情况下,当它返回 success 时true
,一切正常,当它获得成功 boolean 时的问题是false
,然后是错误:
如何改造响应数组或对象。
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 26 path $ .data
可以用一个响应类来完成吗?
json响应:
{
"success": true,
"data": {
"message": "User created",
}
}
json响应:
{
"success": false,
"data": [
{
"code": "existing_user_login",
"message": "User Exist !"
}
]
}
代码:
public class Response {
public Boolean success;
public Data data;
public Boolean isSuccess() { return success; }
public Data getData() {
return data;
}
public class Data {
public String code;
public String message;
public String getMessage() { return message; }
public String getCode() { return code; }
}
}
解决方案
使用ObjectMapper
您可以通过配置反序列化功能来做到这一点,如下所示:
// import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper objMapper = new ObjectMapper();
// this is to accept single element as array
objMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
// this is to handle if any property is missing
objMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Response resp = objMapper.readValue(jsonString, Response.class);
推荐阅读
- groovy - 如何在 JIRA Scriptrunner 中使用 Groovy 中的给定值从嵌套映射 (JSON) 中获取密钥
- typo3 - TYPO3 10.4:是否可以在自定义后端模块/前端插件中获得内置文件浏览器?
- mysql - 拆分数据列中雄辩的mysql where语句?
- python - 从其他 Dataframe 中的信息填充 Dataframe 列
- javascript - javascript中的对象解构
- javascript - 导入tone.js时出现引用错误
- java - 在 Spring MVC 中处理密码确认
- c# - 我从 Redis 桌面管理器工具中获得了价值。但我不确定这是什么格式?
- arrays - Bash - 如何检查数组中是否不存在值?
- kubernetes - 无论资源是否不足,Pod 都会被调度