在Jackson中反序列化多个字段

时间:2015-06-24 20:13:44

标签: java jackson

假设我的JSON看起来像这样:

var columnTotals = new ConcurrentDictionary<int, decimal>();

Parallel.ForEach(MyMatrix,
    // Each Task gets own dictionary
    () => new Dictionary<int, decimal>(),
    (row, state, colTots) =>
    {
        foreach (var column in row.Value)
        {
            if (!colTots.ContainsKey(column.Key))
            {
                colTots[column.Key] = column.Value;
            }
            else
            {
                colTots[column.Key] += column.Value;
            }
        }
        return colTots;
    },
    colTots =>
    {
        // Aggregate the dictionaries
        foreach (var column in colTots)
        {
            columnTotals.AddOrUpdate(column.Key, column.Value, 
                (key, old) => old + column.Value);
        }
    });

“key-n”字段的数量未知,但从1开始连续编号。我希望将其反序列化为对象,如下所示:

{ "key1":1, "key2":2, "key3":3 }

也就是说,public class MyPojo { private List<Integer> keys; } 对应keys.get(0)字段,依此类推。 JSON也可能有其他非“key-n”字段。

我的印象是

key1

其中public class MyPojo { @JsonUnwrapped @JsonDeserialize(using = KeyDeserializer.class) private List<Integer> keys; } KeyDeserializer只会提取所有“key-n”字段,会起作用;但是,我发现没有调用反序列化器,因为JSON缺少名为JsonDeserializer的字段。

由于JSON是第三方,我无法真正尝试修改JSON,所以我想知道是否有任何替代方法来解决这个问题。

0 个答案:

没有答案