小编Mic*_*lla的帖子

使用Jackson序列化/反序列化Map <String,Object>

我有一个如下所示的课程

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)

java spring json jackson

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

BeanWrapperFieldsetMapper以每个字段为基础映射PropertyEditor

我正在使用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并成功解析给定的格式日期字符串.但是,如果我在同一个文件中有更多日期字符串,格式不同,我无法解析它们.我需要的是将编辑器与字段相关联,那么有没有办法可以做到这一点?

java spring spring-batch

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

具有可重试和可跳过异常的jsr 352批处理可能会多次处理项目

我有一个用JSR-352(在wildfly上使用jberet)实现的批处理。

我有一个项目计数为15的块,并java.lang.Exception配置为可重试和可跳过的异常。

当有很多例外时,大多数项目将被多次处理。在这种极端情况下,所有项目都会在编写器中引发异常:

  • 读取前15个项目
  • 第一项发生例外
  • 块将回滚并配置为item-count = 1
  • 第一项被阅读
  • 再次发生异常,项目被跳过
  • 继续进行其他14个项目,每个项目可能会发生异常,每个项目都将被跳过
  • 在前15个项目之后,该块以item-count = 15返回
  • 读取项目16-30
  • 再次发生异常
  • 阅读器回滚到最新的检查点

此时,由于没有成功的已处理项目,因此仍然没有检查点。因此,读者再次从第一项开始。所有30个项目的item-count = 1等。

如果存在许多此类失败,则批次将一次又一次地处理所有项目。

我认为也需要为跳过的项目设置检查点,因为跳过的项目不应该再次处理。

我认为这是规范中的错误,所以我已经在那打开了一个问题:https : //github.com/WASdev/standards.jsr352.batch-spec/issues/15 还是我错了,并且误解了实现?

在Spring Batch中如何实现?

java java-ee jsr352 jbatch jberet

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

Robocopy成为无限循环

我在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批处理文件吗?

windows batch-file batch-processing

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

spring Scheduler - 每周运行一次

我必须编写一个每周运行一次的 spring 调度程序,比如每周一凌晨 1 点。它的 cron 表达式是什么,我们可以使用 fixedDely 来归档它。

spring spring-boot

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