如何在 smooks java 到 java 中编写从日期到日期的解码器

How to write decoder from date to date in smooks java to java

我正在使用 ObjectMapper 从 json 准备 Java 对象。这是 json 数据

"dateTimeSent" : "LongValue"

源和目标都 java 类 有字段是 java.util.Date 类型。 我试过这样映射

 <jb:value property="dtSent" data="dateTimeSent" decoder="Date">
        <jb:decodeParam name="format">EEE MMM dd HH:mm:ss z yyyy</jb:decodeParam>
 </jb:value>

在文档中提到此解码器用于从字符串 encode/decode 到 java.util.Date。是我需要为此编写自定义解码器吗?如果是,请告诉我如何写。我是新手。

从字符串 encode/decode 到 java.util.Date/java.sql.Date/ java.util.Calendar/java.sql .Time/java.sql.Timestamp.我的用例,我必须从日期到日期解码。所以我在源代码 class 中使用 setter 和 getter 创建了另一个变量,例如 - private String modeifiedDateTimeSent

我在 smooks 中使用 modifiedDateTimeSent 变量进行映射-config.xml

<jb:value property="dtSent" data="modeifiedDateTimeSent" decoder="Date">
    <jb:decodeParam name="format">yyyy-MM-dd HH:mm:ss</jb:decodeParam>
</jb:value>

接下来,我必须在映射 java class A 到 Class B 之前设置变量中的值。

    Date modifiedDtTimeSent = order.getLr().getAdminSection().getDateTimeSent();
    String modifiedDtTimeSentString = getDateAsString(modifiedDtTimeSent,"yyyy-MM-dd HH:mm:ss");
    object.setModifieddatetimesent(modifiedDtTimeSentString);

然后最后,把你的 smooks java 转换成 java -

        Smooks smooks =  new Smooks("smooks-config.xml");
        ExecutionContext executionContext = smooks.createExecutionContext();
        JavaSource source = new JavaSource(object);
        JavaResult result = new JavaResult();
        smooks.filterSource(executionContext, source, result);
        ConvertedClass cc = (IimLocalResponse) result.getBean("xyz");

希望这会有所帮助。