我有一个POJO,它有一个字段:
public class Media {
private Asset asset;
}
Run Code Online (Sandbox Code Playgroud)
将json响应解析为此资产POJO时,一切都很完美.但是,这个资产带来的关键点略有不同.它可以是:
@JsonProperty("cover_asset")
Run Code Online (Sandbox Code Playgroud)
要么
@JsonProperty("asset")
Run Code Online (Sandbox Code Playgroud)
有没有办法注释POJO以识别这种情况并反序列化到同一个字段中.它们不可能出现在同一个响应中.
我正在使用描述Jackson数据类型JSR310页面的库,但我仍然难以让它工作.
我配置了以下bean:
@Bean
@Primary
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JSR310Module());
return mapper;
}
Run Code Online (Sandbox Code Playgroud)
当我调用我的REST API时,日期格式输出是yyyy-MM-dd'T'HH:ss.SSSSSS,例如2015-04-11T00:10:38.905847.这可以通过我的AngularJS代码处理得很好.
当我想向REST API提交内容时,日期会发布为yyyy-MM-dd'T'HH:mm:ss.SSS'Z',例如2015-04-09T08:30:00.000Z
杰克逊最后一直在抱怨'Z'.如果我查看LocalDateTimeDeserializer它在文档中使用的DateTimeFormatter.ISO_LOCAL_DATE_TIMEboils ISO_LOCAL_DATE'T'ISO_LOCAL_TIME,它提到它没有覆盖区域.
所以我想我应该设置DateFormat在ObjectMapper我创建:
@Bean
@Primary
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JSR310Module());
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
return mapper;
}
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用.我将其更改为简单的类似yyyy-MM-dd但序列化日期保留为以前的格式,反序列化也不受影响.
我在这做错了什么才能让它发挥作用?据我所知,我的JavaScript代码中的日期格式是ISO 8601格式...
我想在表中插入一行:
INSERT INTO some_table VALUES (now(), now());
Run Code Online (Sandbox Code Playgroud)
我希望两列中的日期值相等.以上查询对此要求是否安全?或者我应该使用其他替代方法,如子查询/ CTE:
INSERT INTO some_table (select t.now, t.now from (select now()) as t);
Run Code Online (Sandbox Code Playgroud)
一般来说,这些函数如何在SQL内部调用?如何调用函数的序列(从左到右/从右到左)?是否只调用一次给定函数并为单个查询缓存返回值?它是供应商特定的吗?
任何阅读链接都非常受欢迎.
我有一个具有Instant成员变量类型的 Java 类:
public class SomeRecord {
private String someId;
private Instant someInstant;
// getters and setters
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 MongoTemplate 更新someInstant数据库中的字段:
public SomeRecord updateSomeRecordBySomeId(final String someId, Object someInstant) {
Query query = new Query();
query.addCriteria(Criteria.where("someId").is(someId));
Update update = new Update();
update.set("someInstant", someInstant);
return operations.findAndModify(query, update, new FindAndModifyOptions().returnNew(true), SomeRecord.class);
}
Run Code Online (Sandbox Code Playgroud)
如果我将该方法调用为:
updateSomeRecordBySomeId("SOME-ID", Instant.now());
将字段作为Date类型持久保存在数据库中:
"someInstant" : ISODate("2017-07-11T07:26:44.269Z")
现在该方法也可以被调用为:
updateSomeRecordBySomeId("SOME-ID", "2017-07-11T07:26:44.269Z");
在这种情况下,我得到一个例外:
org.springframework.core.convert.ConverterNotFoundException:找不到能够从类型 [java.lang.String] 转换为类型 [java.time.Instant] 的转换器
这是完全有道理的。(它会更新数据库中的字段String。"someInstant" : "2017-07-11T07:26:44.269Z")
MongoConfig.java: …
我们必须使用SUITABLE协议为Instant Messaging开发本机移动应用程序.我们还要为该应用程序开发一个网站,以便那些无法登录移动设备的人可以通过网站继续他们的即时消息.
稍后,我们将向本机移动应用程序和网站添加语音和视频呼叫功能.
对于上述标准,哪一个是最好的?
在这里考虑我一个新手.
你的回答对我来说真的很重要.
我是网络开发的新手,所以无论我错在哪里都要纠正我.
我正在为我的@RequestMapping方法的自定义错误场景设计一个 POJO 。
Spring 默认抛出 a HttpMessageNotReadableExceptionif a POSTis made without any body 并很好地返回错误响应,如下所示:
{
"timestamp": "2017-07-28T18:54:11.867+0000",
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.http.converter.HttpMessageNotReadableException",
"message": "Required request body is missing: public org.springframework.http.ResponseEntity<some.package.name.SomeResponseClass> some.package.name.SomeControllerClass.someRequestMappingMethod(java.util.Map<java.lang.String, java.lang.String>, some.package.name.SomeRequestClass)",
"path": "/somepath/"
}
Run Code Online (Sandbox Code Playgroud)
类似地,如果对任何注释的字段的验证@Valid失败,它会抛出MethodArgumentNotValidException并返回错误响应,如下所示:
{
"timestamp": "2017-07-28T17:23:53.102+0000",
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.bind.MethodArgumentNotValidException",
"errors": [
{
"codes": [
"NotNull.incident.someField",
"NotNull.someField",
"NotNull.java.lang.String",
"NotNull"
],
"arguments": [
{
"codes": [
"someObject.someField",
"someField"
],
"arguments": null,
"defaultMessage": "someField",
"code": …Run Code Online (Sandbox Code Playgroud) 我通过命令运行花:
celery flower --broker=amqp://<username>:<password>@localhost:5672/<virtualhostname> --broker_api=http://<username>:<password>@localhost:5672/api/
我可以看到任务信息,工人信息等。
但是一旦我转到/broker,我就会在控制台中看到错误:
RabbitMQ management API call failed: Stream closed
并且 UI 保持空白,没有数据。
有趣的是,每当我转到 时/monitor,我都会在控制台中看到相同的错误,但是,几秒钟后图表会加载到监视器页面上。
但是对于经纪人页面,即使在等待之后也没有任何反应。
我正在使用的代理是,RabbitMQ并且已经通过以下命令为代理启用了管理插件:
rabbitmq-plugins enable rabbitmq_management
为什么我会收到代理页面的 Stream closed 错误?
相关的 github 问题:https : //github.com/mher/flower/issues/830