当前位置: 首页 > 面试题库 >

如何用thyme来序列化POJO?

公良俊楚
2023-03-14
问题内容

我想<script>使用thymeleaf 在标签内将POJO(普通的Java对象)作为普通Json 插入。我还使用Spring MVC作为框架。

给定这样的对象:

class Data {
   String a;
   int b;
   Object c;
}

我想获得像这样的东西作为渲染模板:

<script>
   var data = {
      a: "foo",
      b: 123,
      c: {...}
    }
</script>

直到我还没有找到使用百里香叶渲染这种方法的方法。

我试过了:

<script th:inline="javascript">
    var data = /*[[${myDataObj}]]*/ {};
</script>

但这失败了,因为显然百里香无法序列化POJO。

然后,我还尝试提供已序列化为json的对象:

<script th:inline="javascript">
    var data = /*[[${myDataAsJson}]]*/ {};
</script>

但这也不起作用,因为它将再次对字符串进行转义。同样,百里香叶似乎没有办法提供行未转义的字符串。

…现在这很烂…如何使用百里香叶在脚本标签中插入对象?

显然,这是自2012年以来的一个问题,他们似乎并未给予太多考虑:

  • https://github.com/thymeleaf/thymeleaf/issues/12
  • https://github.com/thymeleaf/thymeleaf/issues/81

…我的问题是:对此有任何解决方法吗?要使用百里香序列化POJO?有点烂。如果我不太依赖它,我会把它扔掉,但是现在它代表着很多工作来改变这种依赖关系。


问题答案:

编辑:

从thymeleaf 3开始,它已经实现:https
:
//github.com/thymeleaf/thymeleaf/issues/12

…只花了他们3年多的时间:/

好的,我还没有真正找到一种好的方法,但是这是我的“胜过一切”的解决方法:

<script th:inline="javascript">
    var jsonString = /*[[${myJsonString}]]*/ "{\"a\":\"... ";
    var data = JSON.parse(jsonString)
</script>

这不是理想的,因为它无用地执行了额外的JSON序列化/反序列化……但至少可以正常工作。



 类似资料:
  • 问题内容: 我从ExtJS获取日期字符串,其格式为: “ 2011-04-08T09:00:00” 当我尝试反序列化此日期时,它将时区更改为“印度标准时间”(该时间增加+5:30)。这就是我反序列化日期的方式: 这样做也不会更改时区。我仍然在IST中得到日期: 如何以无时区麻烦的日期反序列化日期? 问题答案: 我找到了解决方法,但与此同时,我需要在整个项目中注释每个日期的设置器。有没有一种方法可以

  • Thyme 可以自动追踪你使用应用程序的时间。 特性: 简单的命令行界面: 每 30s 记录一次你使用的应用 $ while true; do thyme track -o thyme.json; sleep 30s; done; 在新窗口创建图表以显示应用使用时间 $ thyme show -i thyme.json -w stats > thyme.html 安装: 安装 Go: $ go g

  • 问题内容: 在杰克逊的数据绑定的文档表明,杰克逊支持deserialising“所有支持类型的数组”,但我不能找出确切的语法这一点。 对于单个对象,我可以这样做: 现在,对于数组,我想这样做: 有人知道是否有不可思议的命令吗?如果没有,那么解决方案是什么? 问题答案: 首先创建一个映射器: 作为数组: 作为列表: 指定列表类型的另一种方法:

  • 我需要通过flink消费Kafka,不幸的是,Kafka消息是在serde中使用原型,完全不知道如何处理它,这里是来自互联网的代码,但我不能使它工作。 这不起作用,它会让NPE: 有人知道我做错了什么吗?使用twitter ProtobufSerializer是唯一值得拥有protobuf的方法吗?还是还有别的路要走?

  • 我是solr的新手,当我试图在Solr中序列化/反序列化一个Map时,我遇到了一个问题。 我在Java应用程序中使用Spring Data Solr,如下所示: 它在Solr中展平并序列化我地图,如下所示: 但是,当我运行搜索时,返回的对象始终将此字段设置为 NULL。反序列化不适用于此特定字段,看起来它无法识别键 1、键 2...作为地图的一部分。 有人知道如何使派生工作吗?我必须实现自定义转换

  • 问题内容: 我有一个问题。我想使用JAXB将一个对象转换为另一个对象。就像在中,我有一个class 和另一个class ,它们都有相同的参数,实际上都是相同的(复制粘贴),但是包不同。我想使用进行它们之间的转换。 怎么做,请帮帮我。 问题答案: 您可以执行以下操作。 注意: 不需要利用JAXBSource将数据具体化为XML。 它在对象模型上不需要任何注释。 com.home.Student co

  • 嗨,我有LogEventObject在客户端用于记录事件,我想使用REST API将其发送到服务器。我将LogEventObject转换为json字符串,并通过REST将其作为有效载荷发送。在服务器端,我使用Groovy,当我尝试做对象apper.read值()时,我得到以下错误。 com.fasterxml.jackson.databind.JsonMappingExc0019:找不到非具体的集

  • 我按照本指南将Micronaut Serialization与Jackson注释一起使用。当我创建一个抽象类和一个类时,我可以使用和来正确序列化类的对象。 但是,当我使用类型的属性序列化的对象但使用运行时类型时,该属性被序列化为。 下面的代码应该解释了我的问题。请注意,我正在使用,当我将其替换为时,它会按预期工作。 有没有一种方法可以使用注释使其工作?