Jackson在json中添加反斜杠

我正在Jersey上构建REST服务,并使用Jackson从我模型的java类生成JSON。具有绝对简单值的模型,我认为这是最典型的情况。但我得到了奇怪的结果:

[{\'name\':\'Nick\',\'role\':\'admin\',\'age\':\'32\',\'rating\':47}]

我的预期结果是:

[{“姓名”:“尼克”,“角色”:“管理员”,“年龄”:“32”,“评级”:47}]

我的字段源值不包含任何特殊字符。这些都是简单的词

这是我的Java类。
实体:

公共类用户{
私有字符串名称;
私有字符串角色;
私弦时代;
私人整数评级;

休息服务类别:

@ServiceConfig(contextName=“myContext”)
@路径(“/myrest”)
公共类myrest服务{
私有静态最终字符串JSON\u CONTENT\u TYPE=MediaType.APPLICATION\u JSON+“charset=UTF-8”;
@上下文
受保护的HttpServletResponse;
@得到
@路径(“/users”)
@公开交易
@产生({MediaType.APPLICATION_JSON})
公共字符串查找器(@QueryParam(“部门”)字符串部门){
setContentType(JSON内容类型);
pdtreponse.status(response.sendStatus(response.status.OK.getStatusCode());
列表<用户>用户=新阵列列表<>();
添加(新用户(“尼克”、“管理员”、“32”、“47”);
字符串jsonInString;
ObjectMapper mapper=新的ObjectMapper();
试一试{
jsonInString=mapper.writeValueAsString(用户);
}捕获(JsonProcessingException ex){
jsonInString=“抛出异常:”+ex.getMessage();
}
返回jsonInString;
}

我已尝试对字符串属性使用注释@JsonRawValue

@JsonRawValue
私有字符串名称;

但本案的结果是:

[{“姓名”:尼克,“角色”:管理员,“年龄”:32,“评级”:47}]

我希望:

[{“姓名”:“尼克”,“角色”:“管理员”,“年龄”:“32”,“评级”:47}]

很明显,Jackson以某种方式逃避了json响应结果中的引号。但为什么要这样做,最重要的是如何避免这样做?它们本身就是字符串!没有任何引号或特殊字符

我使用java7jackson2.6.1以及Postman来测试结果。
有什么办法解决我的问题吗

您可以配置ObjectMapper:

final ObjectMapper mapper=new ObjectMapper();
配置(JsonGenerator.Feature.QUOTE\u字段名称,false);
configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES,true);
字符串jsonUsers=mapper.writeValueAsString(用户);

更多信息请点击这里

发表评论