gpt4 book ai didi

java - 将包含对象映射的对象列表编码(marshal)到 JSON

转载 作者:行者123 更新时间:2023-12-01 14:55:44 27 4
gpt4 key购买 nike

我有一个对象结构,我正在尝试用 Jackson 对其进行注释以编码/解码到 JSON 文件。

public class A {
List<B> bList;
}

public class B {
String attr;
Map<String, C> map;
}

public class C {
@JsonIgnore
String name;
String value;
}

A 有一个 B 的列表,B 有一个 C 的映射,其中 map 的关键是Cname属性。如果可能的话,我希望 JSON 看起来像这样:

{
"bList" : [
{
"attr":"itsValue"
"KEY_IN_MAP":"VALUE_IN_C",
"KEY_2_IN_MAP":"VALUE_2_IN_C"
}
]
}

其中 KEY_IN_MAPC 的名称,作为 B 映射中的键,VALUE_IN_C 是映射中值对象的值。我尝试为 map 注释 put 方法:

@JsonAnySetter
private void put(String name, C value) {
map.put(name, c);
}

但是整理这给了我:

{
"bList" : [
{
"attr":"itsValue"
"KEY_IN_MAP": {
"value":"VALUE_IN_C",
},
"KEY_2_IN_MAP": {
"value":"VALUE_2_IN_C"
}
}
]
}

是否有任何方法可以使用 Jackson 或任何其他 JSON 序列化库获取上述映射?我的目标是摆脱每次都写入 "value" 的冗余,并尽可能地压缩文件。

B 中的映射可以变成 C 的列表,但我仍然需要映射

{"name" : "value"} for each object C

最佳答案

以下是我的一些建议:

  1. 将您的 Map<String,C> 设为 Map<String,String>
  2. 您还可以将 Map<String,C> 设为 List<C>

请查看讨论相同内容的 other 线程。

关于java - 将包含对象映射的对象列表编码(marshal)到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320699/

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