AjaxResult info = remoteTenantService.getInfo(tenantId);远程调用拿到了info,package com.xfzx.common.core.web.domain; import com.xfzx.common.core.constant.HttpStatus; import com.xfzx.common.core.utils.StringUtils; import java.util.HashMap; import java.util.Objects; /** * 操作消息提醒 * * @author project-init */ public class AjaxResult extends HashMap<String, Object> { /** * 状态码 */ public static final String CODE_TAG = "code"; /** * 返回内容 */ public static final String MSG_TAG = "msg"; /** * 数据对象 */ public static final String DATA_TAG = "data"; private static final long serialVersionUID = 1L; /** * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。 */ public AjaxResult() { } /** * 初始化一个新创建的 AjaxResult 对象 * * @param code 状态码 * @param msg 返回内容 */ public AjaxResult(int code, String msg) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); } /** * 初始化一个新创建的 AjaxResult 对象 * * @param code 状态码 * @param msg 返回内容 * @param data 数据对象 */ public AjaxResult(int code, String msg, Object data) { super.put(CODE_TAG, code); super.put(MSG_TAG, msg); if (StringUtils.isNotNull(data)) { super.put(DATA_TAG, data); } } /** * 返回成功消息 * * @return 成功消息 */ public static AjaxResult success() { return AjaxResult.success("操作成功"); } /** * 返回成功数据 * * @return 成功消息 */ public static AjaxResult success(Object data) { return AjaxResult.success("操作成功", data); } /** * 返回成功消息 * * @param msg 返回内容 * @return 成功消息 */ public static AjaxResult success(String msg) { return AjaxResult.success(msg, null); } /** * 返回成功消息 * * @param msg 返回内容 * @param data 数据对象 * @return 成功消息 */ public static AjaxResult success(String msg, Object data) { return new AjaxResult(HttpStatus.SUCCESS, msg, data); } /** * 返回警告消息 * * @param msg 返回内容 * @return 警告消息 */ public static AjaxResult warn(String msg) { return AjaxResult.warn(msg, null); } /** * 返回警告消息 * * @param msg 返回内容 * @param data 数据对象 * @return 警告消息 */ public static AjaxResult warn(String msg, Object data) { return new AjaxResult(HttpStatus.WARN, msg, data); } /** * 返回错误消息 * * @return 错误消息 */ public static AjaxResult error() { return AjaxResult.error("操作失败"); } /** * 返回错误消息 * * @param msg 返回内容 * @return 错误消息 */ public static AjaxResult error(String msg) { return AjaxResult.error(msg, null); } /** * 返回错误消息 * * @param msg 返回内容 * @param data 数据对象 * @return 错误消息 */ public static AjaxResult error(String msg, Object data) { return new AjaxResult(HttpStatus.ERROR, msg, data); } /** * 返回错误消息 * * @param code 状态码 * @param msg 返回内容 * @return 错误消息 */ public static AjaxResult error(int code, String msg) { return new AjaxResult(code, msg, null); } /** * 是否为成功消息 * * @return 结果 */ public boolean isSuccess() { return Objects.equals(HttpStatus.SUCCESS, this.get(CODE_TAG)); } /** * 是否为警告消息 * * @return 结果 */ public boolean isWarn() { return Objects.equals(HttpStatus.WARN, this.get(CODE_TAG)); } /** * 是否为错误消息 * * @return 结果 */ public boolean isError() { return Objects.equals(HttpStatus.ERROR, this.get(CODE_TAG)); } /** * 方便链式调用 * * @param key * @param value * @return */ @Override public AjaxResult put(String key, Object value) { super.put(key, value); return this; } } 我怎么把code和msg和data拿到
时间: 2025-04-07 20:15:36 浏览: 38
<think>嗯,用户想从AjaxResult对象里获取code、msg和data。首先,我需要回忆一下AjaxResult的结构。根据提供的代码,AjaxResult继承自HashMap,所以应该用get方法通过键来取值。
用户给出的类中定义了三个常量:CODE_TAG是"code",MSG_TAG是"msg",DATA_TAG是"data"。所以直接用这些键来获取对应的值。比如,info.get("code")就能拿到状态码,不过要注意类型转换,因为返回的是Object类型,可能需要转为Integer或者String。
不过用户提供的类里,AjaxResult的构造方法在存入code时用的是int类型,比如HttpStatus.SUCCESS应该是个整数。所以code应该是Integer类型,而msg是String,data是Object,可能是各种类型,比如另一个对象或者集合。
另外,用户代码中有一些工具方法,比如isSuccess(),可以用来判断是否成功。不过用户的问题是如何取出这三个字段的值,所以直接使用get方法即可。需要注意data可能为null,或者不存在的情况,比如当data未被设置时,info.get("data")会返回null。
用户可能是在远程调用后得到了AjaxResult对象,需要处理不同的情况,比如成功时提取data,失败时处理错误信息。所以建议用户先检查code,再处理data,避免空指针异常。
总结步骤:使用get方法获取各个键对应的值,注意类型转换,并处理可能为null的情况。同时可以利用AjaxResult提供的isSuccess等方法来判断状态,简化代码。</think>我们可以通过以下步骤从AjaxResult对象中提取code、msg、data三个核心字段:
一、基础取值方法(直接通过HashMap接口)
```java
// 获取状态码(需强制类型转换)
int code = (Integer) info.get(AjaxResult.CODE_TAG);
// 获取消息描述(需强制类型转换)
String msg = (String) info.get(AjaxResult.MSG_TAG);
// 获取业务数据(可能为null,类型取决于接口实现)
Object data = info.get(AjaxResult.DATA_TAG);
```
二、推荐安全写法(结合工具方法)
```java
// 1. 获取状态码(推荐使用自动拆箱)
int statusCode = (int) info.getOrDefault(AjaxResult.CODE_TAG, HttpStatus.ERROR);
// 2. 获取消息(空安全处理)
String message = StringUtils.defaultString((String) info.get(AjaxResult.MSG_TAG));
// 3. 获取数据(带类型检查)
if(info.containsKey(AjaxResult.DATA_TAG)){
YourDataType dataObj = (YourDataType) info.get(AjaxResult.DATA_TAG);
}
```
三、状态判断建议
```java
// 使用内置状态判断方法更安全
if(info.isSuccess()) {
// 成功时处理data
TenantInfo tenant = (TenantInfo) info.get(AjaxResult.DATA_TAG);
} else if(info.isError()) {
// 错误时处理msg
log.error("请求失败,原因:{}", info.get(AjaxResult.MSG_TAG));
}
```
四、完整示例代码
```java
AjaxResult info = remoteTenantService.getInfo(tenantId);
// 安全取值流程
int code = (int) info.getOrDefault(AjaxResult.CODE_TAG, HttpStatus.ERROR);
String msg = (String) info.getOrDefault(AjaxResult.MSG_TAG, "未知错误");
if(info.isSuccess()) {
// 类型安全转换
if(info.get(AjaxResult.DATA_TAG) instanceof TenantInfo) {
TenantInfo tenant = (TenantInfo) info.get(AjaxResult.DATA_TAG);
// 处理租户信息...
} else {
log.warn("返回数据类型异常");
}
} else {
log.error("请求失败,错误码:{},错误信息:{}", code, msg);
}
```
注意事项:
1. 强制类型转换前建议使用`instanceof`做类型检查
2. `DATA_TAG`可能为null,建议先做空值判断
3. 推荐优先使用`isSuccess()`等内置状态判断方法
4. 如果使用Spring框架,可考虑使用`@JsonIgnore`注解增强序列化安全性
通过上述方法,可以安全可靠地从AjaxResult对象中提取所需数据字段。建议结合业务场景封装工具类,提高代码复用性。
阅读全文
相关推荐

















