相关疑难解决方法(0)

如何使用Jackson JSON处理器序列化Joda DateTime?

如何根据一个简单的模式(如"dd-MM-yyyy")让杰克逊序列化我的Joda DateTime对象?

我试过了:

@JsonSerialize(using=DateTimeSerializer.class)
private final DateTime date;
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

ObjectMapper mapper = new ObjectMapper()
    .getSerializationConfig()
    .setDateFormat(df);
Run Code Online (Sandbox Code Playgroud)

谢谢!

java json jodatime jackson

117
推荐指数
7
解决办法
13万
查看次数

Spring Boot中的JSON Java 8 LocalDateTime格式

我在Spring Boot Application中格式化Java 8 LocalDateTime时遇到了一个小问题.使用"正常"日期我没有问题,但LocalDateTime字段转换为以下内容:

"startDate" : {
    "year" : 2010,
    "month" : "JANUARY",
    "dayOfMonth" : 1,
    "dayOfWeek" : "FRIDAY",
    "dayOfYear" : 1,
    "monthValue" : 1,
    "hour" : 2,
    "minute" : 2,
    "second" : 0,
    "nano" : 0,
    "chronology" : {
      "id" : "ISO",
      "calendarType" : "iso8601"
    }
  }
Run Code Online (Sandbox Code Playgroud)

虽然我想将其转换为:

"startDate": "2015-01-01"
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像这样:

@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
public LocalDateTime getStartDate() {
    return startDate;
}
Run Code Online (Sandbox Code Playgroud)

但是上述任何一个注释都不起作用,日期会像上面那样被格式化.建议欢迎!

java json java-8 spring-boot java-time

98
推荐指数
9
解决办法
12万
查看次数

在Spring中配置ObjectMapper

我的目标是配置objectMapper它只序列化带注释的元素@JsonProperty.

为了做到这一点,我按照这个解释说明了如何配置对象映射器.

我在这里描述了自定义objectmapper .

但是,当NumbersOfNewEvents序列化类时,它仍然包含json中的所有属性.

有人有提示吗?提前致谢

杰克逊1.8.0春季3.0.5

CustomObjectMapper

public class CompanyObjectMapper extends ObjectMapper {
    public CompanyObjectMapper() {
        super();
        setVisibilityChecker(getSerializationConfig()
                .getDefaultVisibilityChecker()
                .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
                .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
                .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
                .withSetterVisibility(JsonAutoDetect.Visibility.DEFAULT));
    }
}
Run Code Online (Sandbox Code Playgroud)

servlet.xml中

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:component-scan base-package="de.Company.backend.web" />

    <mvc:annotation-driven />

    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                    <property name="objectMapper" ref="jacksonObjectMapper" />
                </bean>
            </list>
        </property>
    </bean>

    <bean id="jacksonObjectMapper" class="de.Company.backend.web.CompanyObjectMapper" />
</beans>
Run Code Online (Sandbox Code Playgroud)

NumbersOfNewEvents

public class …
Run Code Online (Sandbox Code Playgroud)

java spring json jackson object-object-mapping

76
推荐指数
8
解决办法
20万
查看次数

JSON解析错误:无法构造java.time.LocalDate的实例:no String-argument构造函数/工厂方法从String值反序列化

我是Spring Data REST项目的新手,我正在尝试创建我的第一个RESTful服务.任务很简单,但我被困住了.

我想使用RESTful API对存储在嵌入式数据库中的用户数据执行CRUD操作.

但我无法弄清楚如何使Spring框架处理birthData为"1999-12-15"并将其存储为LocalDate.@JsonFormat注释没有帮助.

目前我收到错误:

HTTP/1.1 400 
Content-Type: application/hal+json;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 24 Aug 2017 13:36:51 GMT
Connection: close

{"cause":{"cause":null,"message":"Can not construct instance of java.time.LocalDate: 
no String-argument constructor/factory method to deserialize from String value ('1999-10-10')\n 
at [Source: org.apache.catalina.connector.CoyoteInputStream@4ee2a60e; 
line: 1, column: 65] (through reference chain: ru.zavanton.entities.User[\"birthDate\"])"},
"message":"JSON parse error: Can not construct instance of java.time.LocalDate: 
no String-argument constructor/factory method to deserialize from String value ('1999-10-10'); nested exception is com.fasterxml.jackson.databind.JsonMappingException: 
Can not construct instance of java.time.LocalDate: no String-argument …
Run Code Online (Sandbox Code Playgroud)

rest json jackson spring-data-rest spring-boot

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

使用Jackson和JavaTimeModule对Java 8 ZonedDateTime进行序列化

我正在尝试使用Jackson对JSON进行序列化和反序列化对象(marshall/unmarshall).其中一些对象具有Java 8 LocalDate和ZonedDateTime.我在这里读到最好的选择是使用jackson-datatype-jsr310

使用Jackson JSON映射器序列化/反序列化java 8 java.time

但是,当我尝试使用它时:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

java.lang.IllegalAccessError: tried to access method com.fasterxml.jackson.databind.ser.std.StdSerializer.<init>(Ljava/lang/Class;)V from class com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
Run Code Online (Sandbox Code Playgroud)

任何线索?我正在使用Jackson 2.6.0,jackson-datatype-jsr310 2.6.0并且正在部署到Tomcat 8.

谢谢和最好的问候

java serialization json jackson java-8

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

春季启动kafka LocalDateTime

我有一个包含java.time.LocalDateTime的基本POJO:

package foo.bar.asire.api.model;

import java.time.LocalDateTime;

public class Address
{
    private Long id;
    private Integer houseNumber;
    private String address;
    private LocalDateTime created;

    public Address()
    {
        super();
    }

    public Address(Long id, Integer houseNumber, String address, LocalDateTime created)
    {
        super();
        this.id = id;
        this.houseNumber = houseNumber;
        this.address = address;
        this.created = created;
    }

    public Long getId()
    {
        return id;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Integer getHouseNumber()
    {
        return houseNumber;
    }

    public void setHouseNumber(Integer houseNumber)
    {
        this.houseNumber = …
Run Code Online (Sandbox Code Playgroud)

java maven spring-boot spring-kafka

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

如何在 Swagger 中将 Java8 LocalTime 显示为字符串?

我有swagger 2.8.0,我的 POJO 类如下,

public class Item {

   @JsonFormat(pattern="yyyy-MM-dd")
   private LocalDate date;

   @JsonFormat(pattern="HH:mm")
   private LocalTime time;

   // other fields and Getters and Setters are omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)

现在在 swagger-ui 的示例值部分,我的 POJO 模型显示为

{
  "date": "string",
  "time": {
    "hour": 0,
    "minute": 0,
    "nano": 0,
    "second": 0
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在 swagger-ui 中将 LocalTime 显示为字符串?

java swagger swagger-ui swagger-2.0

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

使用 objectMapper 将 JSON 日期格式反序列化为 ZonedDateTime

背景

  1. 我有以下 JSON(来自 Kafka 的消息)
{
      "markdownPercentage": 20,
      "currency": "SEK",
      "startDate": "2019-07-25"
}
Run Code Online (Sandbox Code Playgroud)
  1. 我有以下(生成 JSON 模式)POJO(我无法更改 POJO,因为它是公司的共享资源)
{
      "markdownPercentage": 20,
      "currency": "SEK",
      "startDate": "2019-07-25"
}
Run Code Online (Sandbox Code Playgroud)
  1. 我们的应用程序是一个 Spring Boot 应用程序,它使用 Spring Cloud Stream 从 Kafka 读取 JSON 消息 (1) 并使用 POJO (2),然后对其进行处理。

问题

当应用程序尝试将消息反序列化到对象时,它会引发以下异常

public class Markdown {
    @JsonProperty("markdownPercentage")
    @NotNull
    private Integer markdownPercentage = 0;
    @JsonProperty("currency")
    @NotNull
    private String currency = "";
    @JsonFormat(
        shape = Shape.STRING,
        pattern = "yyyy-MM-dd"
    )
    @JsonProperty("startDate")
    @NotNull
    private ZonedDateTime startDate;

    // Constructors, Getters, Setters etc.

} …
Run Code Online (Sandbox Code Playgroud)

java json jackson spring-boot spring-cloud-stream

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

JSON反序列化Joda Money使用fasterxml ObjectMapper导致异常

使用Dropwizard框架构建API,我使用了fastxml jackson ObjectMapper来解决这个反序列化问题.我正在使用Joda Time和Joda Money.对于Joda Time,定义JodaModule足以解决反序列化问题.但是对于Joda Money来说,JodaModule还不足以解决反序列化问题(如果我错了,请纠正我).所以,保持JodaModule为Joda Time,我已经创建了Joda Money特定的解串器.

public class JodaMoneyDeserializer extends JsonDeserializer<Money> {

    @Override
    public Money deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
        String text = parser.getText();
        return Money.parse(text);
    }

}
Run Code Online (Sandbox Code Playgroud)

对于产品型号,我为Money添加了反序列化器.如果我需要定义其他任何内容,请告诉我.

public class Product {
    ...
    private Money price;
    ...

    ...
    @JsonDeserialize(using=JodaMoneyDeserializer.class)
    public void setPrice(Money price) {
        this.price = price;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

这将尝试仅解析"{"并将抛出错误.

任何提示都非常感谢.

如果您需要其他信息,请告诉我们.

谢谢!

**更新**以下是JSON示例.

{
    "id": 15,
    "productTypeId": 1,
    "code": "XYZK",
    "name": "PRODUCT - XYZK",
    "status": true,
    "visible": true,
    "createdAt": 1400572157000,
    "updatedAt": …
Run Code Online (Sandbox Code Playgroud)

java serialization json jackson

2
推荐指数
1
解决办法
4616
查看次数

Kotlin数据类和LocalDateTime

我有机票舱位:

data class Ticket(
        var contact_email : String? = null,
        var date_opened : LocalDateTime? = null
)
Run Code Online (Sandbox Code Playgroud)

但是从字符串读取时出现错误:

引起原因:com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造实例java.time.LocalDateTime(没有创建者,如默认构造一样,存在):没有从字符串值反序列化的字符串参数构造函数/工厂方法('2017-11-13T06 :40:00Z'),网址为[来源:UNKNOWN; 行:-1,列:-1](通过参考链:rnd_classifier.model.Ticket [“ date_opened”])

我尝试添加注释没有成功:

data class Ticket(
        var contact_email : String? = null,

        @JsonSerialize(using = ToStringSerializer::class)
        @JsonDeserialize(using = LocalDateTimeDeserializer::class)
        var date_opened : LocalDateTime? = null
)
Run Code Online (Sandbox Code Playgroud)

如何解决?

jackson kotlin data-class localdate

2
推荐指数
1
解决办法
1808
查看次数

使用 LocalDateTime 字段将 JSON 反序列化为对象

我要放弃了。我已经浏览了所有可能的 SO 页面,但我无法让它工作。

我有一个ConfigKeyVal这样的课程:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ConfigKeyValue {

    private String name;
    private NssConfigDto value;
}
Run Code Online (Sandbox Code Playgroud)

Config类如下所示:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Config {

    private String name;
    private String source;
    private String destination;
    private int cycle;
    private LocalDateTime fixedTime;
    private LocalDateTime submitDate;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将ConfigKeyVal(顶部的)对象的JSON 数组直接反序列化到我的 ArrayList 中。

public class ConfigKeyValueList extends ArrayList<ConfigKeyValue> {
    public ConfigKeyValueList() {
        super();
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样:

final Data values = …
Run Code Online (Sandbox Code Playgroud)

java json jackson

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