当前位置: 首页 > 知识库问答 >
问题:

在Spring Boot应用程序中更改对象的默认json

夹谷斌蔚
2023-03-14

>

控制器只是实例化这个对象并返回。

在输出中,我看到Date对象的默认表示形式是一个整数(可能是历元的毫秒)

是否有任何方法可以将日期对象的默认jsonification更改为ISO字符串或任何其他字符串?

编辑:

我对Spring和Spring Boot很陌生。我使用的模板来自spring网站上的一个示例应用程序。JSONification是通过Jackson完成的。Rest一下,一般来说,我对Spring不太了解。

共有2个答案

段劲
2023-03-14

日期。默认情况下,toString()方法返回历元时间戳。你想做的是关于杰克逊的事。要实现这一点,请将MyDateTime类更改为如下内容:

public class MyDateTime {
    private final Date date;

    public MyDateTime(Date date) {
        this.date = date;
    }

    public Date date() {   //this is not read by Jackson
        return date;
    }

    public String getDate() {   //this is read by Jackson
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
        return formatter.format(date);
    }

}

序列化时,Jackson会查找getter方法,即以get开头的方法。如果不希望序列化某些内容,请从名称中删除get。这是最简单的解决方案,您可以检查jacksonapi的@JsonIgnore注释以获得进一步的解决方案。如果您想在JSON字符串中的字段名中查看其他内容,请查找@JsonProperty。

要打印人类可读的日期,您需要SimpleDateFormat。这些示例在我的设置中运行良好,我只从HelloController返回自定义类。

龚奕
2023-03-14

您可以设置Jackson在应用程序中序列化日期时使用的默认格式。属性文件:

spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#common-application-properties

您还可以使用@JsonFormat注释指定用于特定日期的特定格式,示例如下:

示例POJO:

public class Demo {
    private Date timestamp1;
    private Date timestamp2;
    public Date getTimestamp1() {
        return timestamp1;
    }
    public void setTimestamp1(Date timestamp1) {
        this.timestamp1 = timestamp1;
    }
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    public Date getTimestamp2() {
        return timestamp2;
    }
    public void setTimestamp2(Date timestamp2) {
        this.timestamp2 = timestamp2;
    }
}

控制器示例:

@RestController
public class DemoController {

    @RequestMapping(value="/demo", method = RequestMethod.GET)
    Demo start() {
        Demo demo = new Demo();
        Date timestamp = new Date();
        demo.setTimestamp1(timestamp);
        demo.setTimestamp2(timestamp);
        return demo; 
    }
}

https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations

 类似资料:
  • 问题内容: 我正在使用NetBeans,试图将熟悉的Java咖啡杯图标更改为我保存在jar文件中资源目录中的png文件。我发现许多不同的网页声称它们都有解决方案,但是到目前为止,它们都无法正常工作。 这是我目前所拥有的(省略try-catch块): 包含此代码的类在 com.xyz 包中,如果有区别的话。该类还扩展了JFrame。此代码在第一行上引发MalformedUrlException。 有

  • 我想在应用程序运行时找到我的对象大小。我想用千分尺在Grafana中显示我的对象大小。 我的对象像人、学生、...... 我该怎么办? 对象大小像文件大小、对象体积

  • 我必须测试一个由spring和jsp编写的web应用程序。应用程序的默认会话超时为30分钟。 我想减少会话超时。为此,我更改了中的文件。但是它不起作用。中的默认配置是- 我刚刚改变了时间- 但仍然不起作用。据我所知,在这种情况下,我必须对spring应用程序的web进行更改。xml。但我不确定。有人能帮我吗? 提前谢谢。

  • 问题内容: 我有一个将大型JSON对象返回到jQueryFlot的控制器,我想知道用更快的东西(例如ServiceStack.Text中的东西)替换默认JavaScriptSerializer会多么容易。 如果我可以使用DependencyResolver来更改此类内容,那将是很好的选择,但是我想,如果绝对可以解决所有问题,它可能会变得很慢。 问题答案: 最好的选择是从JsonResult类继承并

  • 我有一个具有设备管理权限的应用程序。我的应用程序监控收到的短信,并通过一些逻辑传递内容。我可以改变默认的短信应用程序到我的应用程序编程。我的应用程序检查垃圾短信,所以它需要读/写/更新短信数据库。我想要一个Kitkat的修复方案。 我只是注意到,我的应用程序上的传入短信通知不再是新收到的短信通知,而是“新的挂出消息”通知,这是由挂出收到传入短信引起的。所以我的应用程序也不能接收带有sms_rece

  • 在Eclipse中,创建动态Web项目时的文件夹结构是 :构建src WebContent ./build:类 ./建立/类: /src: ./WebContent:索引。html META-INF脚本WEB-INF ./WebContent/META-INF:MANIFEST。MF ./WebContent/scripts:jquery-1.7.1。js ./WebContent/WEB-INF