我有一个如下所示的课程
public class MyClass {
private String val1;
private String val2;
private Map<String,Object> context;
// Appropriate accessors removed for brevity.
...
}
Run Code Online (Sandbox Code Playgroud)
我希望能够与杰克逊一起往返于JSON并返回.我可以序列化上面的对象并收到以下输出:
{
"val1": "foo",
"val2": "bar",
"context": {
"key1": "enumValue1",
"key2": "stringValue1",
"key3": 3.0
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,由于序列化映射中的值没有任何类型信息,因此它们不会正确反序列化.例如,在上面的示例中,enumValue1应该反序列化为枚举值,而是反序列化为String.我已经看到了基于各种类型的基于什么类型的示例,但在我的场景中,我不知道类型是什么(它们将是用户生成的对象,我不会事先知道)所以我需要成为能够使用键值对序列化类型信息.我怎么能和杰克逊一起完成这个?
为了记录,我使用Jackson版本2.4.2.我用来测试往返的代码如下:
@Test
@SuppressWarnings("unchecked")
public void testJsonSerialization() throws Exception {
// Get test object to serialize
T serializationValue = getSerializationValue();
// Serialize test object
String json = mapper.writeValueAsString(serializationValue);
// Test that object was serialized as expected
assertJson(json);
// Deserialize to complete round …
Run Code Online (Sandbox Code Playgroud) 我正在使用spring批处理文件进行数据库处理,目前我正在使用PropertyEditors将分隔文件中的字符串转换为某个对象,如下所示.
Map<Class<?>, PropertyEditor> editors = new HashMap<>();
CustomDateEditor dateEditor = new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true);
editors.put(Date.class, dateEditor);
Run Code Online (Sandbox Code Playgroud)
因此,如果我有一个Date字段,我使用CustomDateEditor并成功解析给定的格式日期字符串.但是,如果我在同一个文件中有更多日期字符串,格式不同,我无法解析它们.我需要的是将编辑器与字段相关联,那么有没有办法可以做到这一点?
我有一个用JSR-352(在wildfly上使用jberet)实现的批处理。
我有一个项目计数为15的块,并java.lang.Exception
配置为可重试和可跳过的异常。
当有很多例外时,大多数项目将被多次处理。在这种极端情况下,所有项目都会在编写器中引发异常:
此时,由于没有成功的已处理项目,因此仍然没有检查点。因此,读者再次从第一项开始。所有30个项目的item-count = 1等。
如果存在许多此类失败,则批次将一次又一次地处理所有项目。
我认为也需要为跳过的项目设置检查点,因为跳过的项目不应该再次处理。
我认为这是规范中的错误,所以我已经在那打开了一个问题:https : //github.com/WASdev/standards.jsr352.batch-spec/issues/15 还是我错了,并且误解了实现?
在Spring Batch中如何实现?
我在C:\ batch中有一个robocopy批处理文件.这是批处理文件:
set LOG="C:\Log\robolog.txt"
set START1="C:\WORK"
set END1="\\fs-02\Work"
Robocopy %START1% %END1% /MIR /PURGE /SEC /SECFIX /R:1 /W:5 /V /ETA /LOG:%LOG%
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我从包含此批处理文件的位置(c:\ batch)打开cmd并从那里运行它,它只是一遍又一遍地运行它并且永远不会结束....我甚至无法终止cmd .... Ctrl+C
只会加快循环.....
但如果cmd start location位于其他位置,则批处理文件将运行并完成.
知道为什么我不能直接从包含它的位置运行这个robocopy批处理文件吗?
我必须编写一个每周运行一次的 spring 调度程序,比如每周一凌晨 1 点。它的 cron 表达式是什么,我们可以使用 fixedDely 来归档它。
java ×3
spring ×3
batch-file ×1
jackson ×1
java-ee ×1
jbatch ×1
jberet ×1
json ×1
jsr352 ×1
spring-batch ×1
spring-boot ×1
windows ×1