假设我的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,所以我想知道是否有任何替代方法来解决这个问题。