当前位置: 首页 > 知识库问答 >
问题:

在jackson json(Java)中以扁平结构序列化List内容

邢良才
2023-03-14

我需要序列化的类:

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class MyClass {

    @JsonProperty("CustomerId")
    private String customerId;

    @JsonProperty("Products")
    private List<ProductDetails> products;

    //Getters and setters
}

我的产品详细信息。java类:

@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class ProductDetails {
    @JsonProperty("ProductId")
    private String productId;

    @JsonProperty("ProductName")
    private String productName;

    //Getters and setters
}

默认序列化输出:

{
  "CustomerId" : "ewm0po",

  "Products" : [ {
       "ProductId" : "AAA",
       "ProductName" : "AAA Product"
     },  {
       "ProductId" : "AAA",
       "ProductName" : "AAA Product"
   }]
}

我试图获得的输出:

{
  "CustomerId" : "ewm0po",
  "ProductId1" : "AAA",
  "ProductName1" : "AAA Product"
  "ProductId2" : "AAA",
  "ProductName2" : "AAA Product"
}

换句话说,我试图跳过产品列表的JSON括号,并在ProductId和ProductName字段的后面加上一个递增的整数。

非常感谢您的帮助!

共有1个答案

宁侯林
2023-03-14

正如蜘蛛鲍里斯所指出的那样。解决方案是编写自定义序列化程序。没有我想象的那么痛苦:-)

 类似资料:
  • 我有一个类别树,由以下内容表示。 这给出了一个dataframe,如下所示: 树中最高的节点的parent_id等于-1,因此树可以用图形表示如下: 我需要生成以下DataFrame。 该树是动态生成的,可以具有任意数量的级别,因此下面的树 应产生以下结果:

  • 问题内容: 我有一个这样的清单: 此列表中的每个项目可能包含一个数据对或一个元组,我想将此列表更改为 然后这样做: 我不知道如何更改列表结构,或者如何基于原始列表进行相同的计算? 问题答案: 如果您只想整理列表,请使用:http : //docs.python.org/library/itertools.html#itertools.chain.from_iterable

  • 问题内容: 请记住,JSON结构事先是未知的,即它是完全任意的,我们只知道它是JSON格式。 例如, 以下JSON 应该反序列化为具有类似key的类似Map的结构(为简洁起见,不包括以上所有内容): 我目前正在调查杰克逊,所以我们有: 但是,生成的Map实例基本上是嵌套Map的Map: 我需要使用“圆点表示法”的扁平化键和扁平化键,如上。 我不希望自己实现此功能,尽管目前我看不到其他任何方式。 问

  • 问题内容: 我在这里发现了同样的问题… …但是没有正确的答案。 最好的建议之一是将嵌套对象包装到新类中,但是这种方法引入了另一个问题:乐高名称。 在我的示例中,此类的最逻辑名称是与父类相同的名称,当然这是不可能的。我的示例很简单,我只想消除父类中的“语言”属性。有人可以帮我做吗? json的示例: 问题答案: 如果JSON属性名称与c#命名约定冲突,则可以在序列化期间使用或批注替换其他名称。 例如

  • 我想在指定年份之间的一年做一个季度的笛卡尔积 年度(2105、2016)应返回季度(2015、Q1)、季度(2015、Q2)...季度(2016年第四季度) 我想出的代码如下所示 上面的代码返回,我需要将其扁平化为。