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

Java JSON:具有不同密钥名的匿名对象(键值)列表

甄鹏云
2023-03-14

也许很简单,但我被困住了。。。我有一个使用Spring Boot和springframework的应用程序。网状物客户RestTemplate,所以后座上的Jackson会自动执行JSON任务。

我想用JSON反序列化REST输入,如下所示:

{
    "serial_no": 12345678,
    "last_dt": [
        {
            "lp": "2022-04-22T15:00:00"
        },
        {
            "bp": null
        },
        {
            "dp": "2022-04-22T00:00:00"
        },
        {
            "iv": "2022-04-22T00:05:11"
        }
    ]
}

请帮我为这个模型创建POJO...如果我创建了以下类(用lombok简化):

@Data
public class LastDt {

    @JsonProperty("lp")
    private String lp;
    @JsonProperty("bp")
    private String bp;
    @JsonProperty("dp")
    private String dp;
    @JsonProperty("iv")
    private String iv;

}
@Data
public class Device {

    @JsonProperty("serial_no")
    private Long serialNo;
    @JsonProperty("last_dt")
    private List<LastDt> lastDt;

}

反序列化在技术上还可以——我得到了一个serialNo Long值的对象,不幸的是LastDt类的4个实例的列表:first instance(LastDt[0])的字段“lp”带有值和“bp”、“dp”、“iv”null;第二个(lastDt[1]):“bp”带值,以及“lp”、“dp”、“iv”空值等等——只设置了一个值,其他值没有设置。这远远不是我想要的。正如你所看到的,有四对相似的匿名对象,它们有不同的密钥名,所以我的模型很糟糕,我知道这一点,但在尝试创建其他对象时遇到了困难。。。有人能帮我吗?

共有1个答案

仉俊能
2023-03-14

你应该在课堂上使用@JsonInclude(JsonInclude.Include.NON_NULL)

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class LastDt {
    @JsonProperty("lp")
    private String lp;
    @JsonProperty("bp")
    private String bp;
    @JsonProperty("dp")
    private String dp;
    @JsonProperty("iv")
    private String iv;
}
 类似资料:
  • 经过前面的学习,我们知道创建对象的标准格式如下: 类名称 对象名 = new 类名称(); 每次 new 都相当于开辟了一个新的对象,并开辟了一个新的物理内存空间。如果一个对象只需要使用唯一的一次,就可以使用匿名对象,匿名对象还可以作为实际参数传递。 匿名对象就是没有明确的给出名字的对象,是对象的一种简写形式。一般匿名对象只使用一次,而且匿名对象只在堆内存中开辟空间,而不存在栈内存的引用。 程序运

  • 问题内容: 在SQL中,将行复制到另一个(备份)表中。如果备份表具有不同的结构(或不同的列名称),这可能吗?如果没有,实现此目标的最佳方法是什么? 这是我想做的:具有columns 。我想将一些行从该表复制到另一个具有column的表。内容进入,对等 问题答案: 该 列名 不事可言,只要该 数据类型 相匹配。 如果列的数据类型不匹配,请尝试相应地强制转换值。 只需尝试 使用小的虚拟表。确保明确列出

  • 我有一个YAML文件(在我的例子中是docker-compose文件),如下所示: 我尝试了这个,但没有成功,从这个问题中得到启发:

  • 我整天都在寻找答案,但到目前为止我还没有太多的运气。 我的问题很简单:如何使用Jackson正确反序列化匿名对象。 它的输出是:JSON=[“com.foo.test.JacksonTest$1”,{“value”:5}],然后我得到一个异常: 线程“main”com.fasterxml.jackson.databind.JSONMappingException中出现异常:无法将类com.foo.

  • 我正在使用的数据库有许多具有相同列但(显然)具有不同表名的表(不是我设计的)。例如(这些是数据库表名): 有没有可能用JPA和Hibernate将这些映射到一个Java类实体?类的名称是,然后在使用它时传入例如,以便对象使用表? 还是只使用普通的、普通的Java对象来完成这样的任务更好? 谢谢你!

  • 问题内容: 让我们创建两个列表: 出: 我创建了两个独立的列表,输出显示了两个不同的内存地址。这不足为奇。但是,现在让我们在没有分配的情况下做同样的事情: 出: 还有第二次: 出: 我不确定如何解释这一点。为什么这两个未命名列表具有相同的内存地址? 问题答案: 从文档: 返回对象的“身份”。这是一个整数,可以保证在此对象的生存期内唯一且恒定。 具有不重叠生存期的两个对象可能具有相同的id()值。