我有一个webfluxendpoint,它返回一个项目数组。我试图让它将对象名添加到由@JsonRootName指定的数组中的每个项中。我曾经尝试过使用Jackson2ObjectMaper这样配置对象映射器。我正在使用SpringBoot 2.4.4。
@Configuration
@EnableWebFlux
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer customizer() {
return builder -> {
builder.modules(new JavaTimeModule());
builder.featuresToEnable(SerializationFeature.WRAP_ROOT_VALUE);
builder.featuresToEnable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
builder.indentOutput(true);
};
}
}
我的endpoint如下所示:
@GetMapping(value = "/all/{id}", produces = "application/json")
public ResponseEntity<Flux<EventsMetaData>> getAllEventsByUser(@PathVariable String id) {
return ResponseEntity.ok(eventsMetaDataService.getAllEventsByUserId(id));
}
Json的回应是:
[
{
"id": "342424234",
"userid": "34324242",
"eventId": null,
"eventName": "Test 1",
"eventDetails": null
},
{
"id": "43435235",
"userid": "34244242",
"eventId": null,
"eventName": "Test",
"eventDetails": null
}
]
预期输出:
[
Event: {
"id": "342424234",
"userid": "34324242",
"eventId": null,
"eventName": "Test 1",
"eventDetails": null
},
Event: {
"id": "43435235",
"userid": "34244242",
"eventId": null,
"eventName": "Test",
"eventDetails": null
}
]
然而,当我的对象被@JsonRootName注释时,我没有得到根对象
@JsonRootName(value = "Event")
public class Event {
欢迎提出任何建议。
编辑:在从配置中删除@EnableWebFlux之后,它给了我一个根包装值,但仍然不是它应该使用的列表:
{
"List": [
{
"id": "610bd71077cfcd2ee941217c",
"eventName": "Test",
"eventDetails": null,
"eventDateTime": null,
"eventLink": null
}
]
}
但是,单个对象像这样尊重包装器:
{
"event": {
"id": "610bd71077cfcd2ee941217c",
"eventName": "Test",
"eventDetails": null,
"eventDateTime": null,
"eventLink": null
}
}
链接到replicar项目https://gitlab.com/dmbeer/so-68651608即使json结构错误,测试列表也不应该存在。
我认为您需要这样配置Bean。
@Configuration
public class ApplicaitonConfiguration {
@Bean
ObjectMapper objectMapper() {
var mapper = JsonMapper.builder().addModules(new JavaTimeModule()).build();
// Enable your features...
return mapper;
}
}
null 但是,当我以Yar-Client模式提交Spark应用程序时,抛出了以下异常: 线程“main”org.apache.spark.sparkException:Task not serializable at org.apache.spark.util.closureCleaner$.ensureRecleaner.ccala:166)at org.apache.spark.util.c
我有以下业务对象 我有以下用于 json 序列化的接口和实现 这是我的客户代码 这里我不喜欢的是,员工知道它将使用特定的库进行序列化(因为JsonProperty属性)。因此,如果我决定使用另一个json序列化程序或编写自己的,我将需要遍历所有业务对象并修改它们。有可能使我的业务对象序列化变得无知吗?如果是,如何 XML序列化和XmlSerializer类也是一样的:我需要用一些属性标记业务对象中
问题内容: 我问了一个先前的问题,关于如何将多个保存文件保存到.ser文件中,建议我使用哈希集,因为它们是可序列化的。我试图编写一段测试代码来序列化哈希集内的每条信息: 但是我在获取代码来编写带有index(i)的对象时遇到了麻烦,因为它说未为type定义该方法。有没有一种方法可以遍历哈希集中的每条信息,还是应该一次序列化整个集合。另一个问题是,如果第一个答案是后者,我将如何将数据反序列化为单独的
问题内容: 我有一个问题。我想使用JAXB将一个对象转换为另一个对象。就像在中,我有一个class 和另一个class ,它们都有相同的参数,实际上都是相同的(复制粘贴),但是包不同。我想使用进行它们之间的转换。 怎么做,请帮帮我。 问题答案: 您可以执行以下操作。 注意: 不需要利用JAXBSource将数据具体化为XML。 它在对象模型上不需要任何注释。 com.home.Student co
嗨,我有LogEventObject在客户端用于记录事件,我想使用REST API将其发送到服务器。我将LogEventObject转换为json字符串,并通过REST将其作为有效载荷发送。在服务器端,我使用Groovy,当我尝试做对象apper.read值()时,我得到以下错误。 com.fasterxml.jackson.databind.JsonMappingExc0019:找不到非具体的集