我有一个返回json响应的spring webservice。我使用这里给出的示例创建服务:http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/
返回json的格式为:{“name”:null,“staffname”:[“kfc-kampar”,“smith”]}
我想从返回的响应中删除任何空对象,因此它看起来如下所示:{“StaffName”:[“KFC-Kampar”,“Smith”]}
我在这里发现了类似的问题,但我已经能够得到一个解决办法,例如。
在Spring中配置ObjectMapper
配置jacksonObjectMapper不在spring mvc 3中工作
如何配置spring mvc 3在json响应中不返回“null”对象?
Spring配置@ResponseBody JSON格式
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<context:component-scan base-package="com.mkyong.common.controller" />
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="prefixJson" value="true" />
<property name="supportedMediaTypes" value="application/json" />
<property name="objectMapper">
<bean class="org.codehaus.jackson.map.ObjectMapper">
<property name="serializationInclusion" value="NON_NULL"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
@Controller
@RequestMapping("/kfc/brands")
public class JSONController {
@RequestMapping(value="{name}", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
Shop shop = new Shop();
//shop.setName(name);
shop.setStaffName(new String[]{name, "cronin"});
return shop;
}
}
我使用的Jackson jar是jackson-mapper-asl1.9.0和jackson-core-asl1.9.0。这些是我添加到pom中的仅有的新JAR,作为我从mkyong.com下载的spring-json项目的一部分提供。
项目构建成功,但当我通过浏览器调用服务时,仍然得到相同的结果,即{“name”:null,“staffname”:[“kfc-kampar”,“smith”]}
有人能告诉我我的配置哪里出了问题吗?
我已经尝试了其他几个选项,但能够以正确格式返回json的唯一方法是将对象映射器添加到JSONController中,并让“getShopInjson”方法返回一个字符串,即。
public @ResponseBody String getShopInJSON(@PathVariable String name) throws JsonGenerationException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
Shop shop = new Shop();
//shop.setName(name);
shop.setStaffName(new String[]{name, "cronin"});
String test = mapper.writeValueAsString(shop);
return test;
}
现在,如果我调用该服务,我将得到预期的结果,即{“staffname”:[“kfc-kampar”,“cronin”]}
我还可以使用@jsonIgnore注释使其工作,但这个解决方案不适合我。
我不明白为什么它在代码中工作而不是在配置中工作,所以任何帮助都是很棒的。
从Jackson 2.0开始,您就可以使用JsonInclude
@JsonInclude(Include.NON_NULL)
public class Shop {
//...
}
问题内容: 通过阅读这些和其他资料,我发现实现我想要的最干净的方法是使用Spring 3.1和可以在mvc-annotation中配置的消息转换器。我更新的spring配置文件是: 服务类与mkyong.com网站上提供的服务类相同,只不过我注释掉了商店名称变量的设置,因此它为null,即 我正在使用的Jacksonjar是jackson-mapper-asl 1.9.0和jackson-core
在过去的几天里,我一直在使用JProfiler来分析本地运行的Websphere7服务器(从RAD8中)。我使用了JProfiler的服务器集成功能来连接到was实例。 现在,我想从WAS服务器实例中删除评测——无论何时启动服务器,它都会显示为“评测”——即使JProfiler没有运行。如何将JProfiler从服务器上“取下”?
下面是一个json响应的示例。正如您所看到的,像:news、number_likes、number_comment、number_post、user和owner这样的字段总是存在。但是像:place、place_mark、comment、album、photo这样的字段并不总是存在。这取决于新闻的类型。 请帮帮我!为了正确的json反序列化,我需要做什么?也许有人有经验,在编写自定义转炉工厂或可以
问题内容: 在.NET Core 1.0(所有API响应)的全局级别上,如何配置Startup.cs,以便在JSON响应中删除/忽略空字段? 使用Newtonsoft.Json,您可以将以下属性应用于属性,但我希望避免将其添加到每个属性中: 问题答案: [.NET Core 1.0] 在Startup.cs中,可以将JsonOptions附加到服务集合,并在其中设置各种配置,包括删除空值: [.N
如何从Jackson在中生成的json响应中排除所有空json对象、数组或空对象的数组? 我正在为一个客户端构建一个Spring Boot REST API。API向数据库发送请求,并且必须生成JSON响应。 DAO层发送本机SQL查询,并以列表形式接收巨大的DB结果。开发人员必须使用索引手动将此结果映射到Java对象(参见下面的代码) SQL查询返回大量空值(这些查询不能修改)。由于这些空值,只
我想在每个响应中添加etag属性。我已经在响应中添加了varie-header和cache-control header(最大age=600,public),但是我没有找到任何在响应中添加etag的解决方案。有人能帮帮我吗?