如何编写一个接受任何java对象并将其转换为json字符串的泛型方法

时间:2017-12-05 17:45:53

标签: java json spring-mvc

我正在为基于spring mvc的应用程序编写一些ajax控制器。现在在一个单独的类中,我有三个方法用于具有相同根URL的三个独立的ajax调用处理程序(这就是我将它们放在单个类中的原因)。现在在每个控制器中我必须返回一个Json(字符串化),我使用Object Mapper来实现它。但是当我看到除了参数类型之外所有这三种方法看起来完全相似时,我觉得是否有办法使代码更优雅。

ajax控制器调用的方法

private String translateGetABCResponseToString(ABC response) {
        try {
            return mapper.writeValueAsString(response);
        } catch (JsonProcessingException ex) {
            throw new ValidationException(ex);
        }
    }

private String translateGetDEFResponseToString(DEF response) {
            try {
                return mapper.writeValueAsString(response);
            } catch (JsonProcessingException ex) {
                throw new ValidationException(ex);
            }
        }

private String translateGetXYZResponseToString(XYZ response) {
            try {
                return mapper.writeValueAsString(response);
            } catch (JsonProcessingException ex) {
                throw new ValidationException(ex);
            }
        }

现在,我想要的是有一种制作单一方法的方法,因为所有三种方法基本上都在做同样的事情。

1 个答案:

答案 0 :(得分:1)

只需使用Object

private String translateObjectToString(Object obj) {
    try {
        return mapper.writeValueAsString(obj);
    } catch (JsonProcessingException ex) {
        throw new ValidationException(ex);
    }
}

Mapper不在乎你给它什么。一切都会好起来的。