java - 为什么响应实体返回带有 setter/getter 名称而不是数据成员名称的 json

标签 java json spring

在下面的代码中,当 Spring ResponseEntity 返回时,我得到一个带有 setter 名称而不是数据成员名称的 json。 当我将 setData 更改为 setResult 并将 getData 更改为 getResult 时。响应更改为结果。 不确定它属于哪个类别,java还是spring。标记两者。

POJO:

public class ResponseObject {

private Object result;
private String message;

public void prepareResponse(Object result,HttpStatus status,String message){
    this.result=result;
    this.httpStatus=status;
    this.message=message;
}
public Object getData() {//gettername is data here
    return result;
}
public void setData(Object result) {//settername is data here
    this.result = result;
}


@Override
public String toString() {
    return "ResponseObject [result=" + result + ",  httpStatus="
            + httpStatus + ", message=" + message + "]";
}

Controller

@RequestMapping(value = "currentuser", method = RequestMethod.GET,produces="application/json")
    public ResponseEntity<ResponseObject> getUserInfo(HttpServletRequest requestServlet,HttpServletResponse responseServlet, HttpSession session) {
        String supervisor = null;
        HashMap loginMap    =   new HashMap();
        ResponseObject  resObj  =   new ResponseObject();
        try {
                supervisor = SecurityContextHolder.getContext().getAuthentication().getName();
                loginMap.put("userName", supervisor);

                System.out.println("username >>>>" + loginMap);
                if(supervisor.contains("anonymous")){
                    /*responseServlet.setStatus(responseServlet.SC_UNAUTHORIZED);*/
                    resObj.setHttpStatus(HttpStatus.UNAUTHORIZED);
                }
                resObj.setData(loginMap);
        } catch (Exception exception) {
            LogUtil.fatalException(CLASS_NAME, "createProjectScreen",
                    exception.getMessage() + " :::InputParams ==>", exception,
                    LOG_NAME);
            resObj.setHttpStatus(HttpStatus.INTERNAL_SERVER_ERROR);
        }  
        return new ResponseEntity<ResponseObject>(resObj,resObj.getHttpStatus());
    }

回应:

{
httpStatus: "UNAUTHORIZED",
message: null,
data: {
userName: "anonymousUser"
}
}

最佳答案

以下作品

The default mechanism is to use implied name as per Bean convention – for getters and setters leave out "get" or "set", lower case first char – but this can be overridden by annotations (@JsonSetter/@JsonGetter for Jackson 1.0, alternatively @JsonProperty for Jackson 1.1).

关于java - 为什么响应实体返回带有 setter/getter 名称而不是数据成员名称的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870755/

相关文章:

java - 与 “JAVA exception handling mindset”相比, “C++ exception handling”是什么?

json - 如何解析不变的 json var 名称

java - 为什么 @ResponseBody 返回已排序的 LinkedHashMap 未排序?

@Controller 类中的 Spring @Value 注释未评估属性文件中的值

Spring AMQP @RabbitListener 转换为原始对象

java - 如何将 NameValuePair 中的 URL 参数添加到 HttpPost 请求

java - 线程 "main"java.lang.UnsupportedClassVersionError 中的异常,不支持的 major.minor 版本 52.0

spring - 如何使用FlatFileItemReader和 block 跳过CSV中的空白行

java - 如何将多台机器的PATCH http请求同步到单台机器

php - 是什么减轻了 PHP 服务器的负载 : SimpleXML or json_decode?