gpt4 book ai didi

java - 将具有统一映射的数据结构序列化为 CSV

转载 作者:行者123 更新时间:2023-11-30 06:18:15 25 4
gpt4 key购买 nike

我必须序列化与此类似的对象:

public class Something {
String id;

Map<String, String> name;
Map<String, String> description;
}

字段namedescription已国际化。键是区域设置标识符(“fr”、“en-US”、“en-UK”、“de”...),值是该区域设置的相应值。

预期 CSV 的标题行必须如下所示:

id,name.fr,name.en-US,description.fr,description.en-US

为了简洁起见,省略了其他语言。

@JsonUnwrapped 似乎没有帮助,因为它会为所有属性生成相同的键“fr”、“en-US”...。

有什么方法可以让 jackson 开箱即用地实现这一目标吗?对支持的区域设置标识符列表进行硬编码是可以接受的。

前方还有更多恶作剧。另一个要序列化的类将如下所示:

public class SomethingElse {
String id;

Map <String, Feature> features;
}

public class Feature {
Map <String, String> feature;
}

每个 SomethingElse 都具有“fr”、“en-US”、“en-UK”、“每种语言中的特征“color”、“taste”...的值de", ...生成的 CSV 必须如下所示:

id,color.fr,color.en-US,taste.fr,taste.en-US,...

区域设置标识符列表在所有用例中都是相同的。

一种可能的方法是首先序列化为 JSON,然后“展平”该 JSON,以便可以轻松地将其序列化为 CSV。我所说的“扁平化”是指转换:

{
"foo": {
"bar": {
"a": 1,
"b": 2
}
}
}

进入:

{
"foo.bar.a": 1,
"foo.bar.b": 2
}

换句话说:每个叶值的键将成为在原始数据结构中访问它所需的 JavaScript 代码。是否有库方法可以进行此类转换?

最佳答案

从 2.9.4 版本开始似乎不支持此功能,请参阅 https://github.com/FasterXML/jackson-dataformats-text/tree/master/csv :

Future improvements: ... Mapping of nested POJOs using dotted notation (similar to @JsonUnwrapped, but without requiring its use

关于java - 将具有统一映射的数据结构序列化为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48765424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com