小编Vik*_*sad的帖子

JSON Jackson将不同的密钥解析到同一个字段中

我有一个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以识别这种情况并反序列化到同一个字段中.它们不可能出现在同一个响应中.

java json jackson

49
推荐指数
4
解决办法
5万
查看次数

使用Jackson JSR310模块反序列化LocalDateTime

我正在使用描述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,它提到它没有覆盖区域.

所以我想我应该设置DateFormatObjectMapper我创建:

@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格式...

java jackson jsr310 java-time

16
推荐指数
2
解决办法
3万
查看次数

在一个postgres查询中多次调用`now()`会不会给出相同的结果?

我想在表中插入一行:

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内部调用?如何调用函数的序列(从左到右/从右到左)?是否只调用一次给定函数并为单个查询缓存返回值?它是供应商特定的吗?

任何阅读链接都非常受欢迎.

sql database postgresql persistence relational-database

6
推荐指数
1
解决办法
323
查看次数

如何使用 Spring MongoTemplate 将 Java 8 Instant 以日期类型保存到 MongoDB?

我有一个具有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: …

java spring mongodb jsr310 mongotemplate

5
推荐指数
1
解决办法
1万
查看次数

适用于即时消息的协议

我们必须使用SUITABLE协议为Instant Messaging开发本机移动应用程序.我们还要为该应用程序开发一个网站,以便那些无法登录移动设备的人可以通过网站继续他们的即时消息.

稍后,我们将向本机移动应用程序和网站添加语音和视频呼叫功能.

  1. 现在我的问题是,基于上述情况,我们应该采用哪种协议?我在互联网上做了一些研究,我无法在XMPP,MQTT和MUMBLE中做出选择.

对于上述标准,哪一个是最好的?

  1. 我也应该为移动应用程序和网站使用相同的协议吗?(根本不知道).是否为本机移动应用程序选择相同或不同的协议以及网站是否重要?

在这里考虑我一个新手.

你的回答对我来说真的很重要.

我是网络开发的新手,所以无论我错在哪里都要纠正我.

xmpp protocols real-time instant-messaging mqtt

4
推荐指数
1
解决办法
5940
查看次数

spring 使用哪个模型类来响应请求映射方法的错误?

我正在为我的@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)

java spring exception-handling response spring-mvc

4
推荐指数
1
解决办法
2093
查看次数

使用Flower时如何查看经纪商信息?

我通过命令运行花:

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

python rabbitmq celery flower

4
推荐指数
2
解决办法
2412
查看次数