java - Jackson中JSON结构对应的POJO可以为null吗?

标签 java json jackson

我正在使用 jackson-annotations 2.4 和相关 jar 从 JSON 转换为 POJO。假设我的 json 中有如下结构:

person
{
  name 
 {
   firstName,
   lastName
  }
}

我将 POJO 定义为:

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({"name"})
class Person
{
  private Name name;

  @JsonProperty("name")
  public Name getName()
  {
    return name;
  }

  @JsonProperty("name")
  public void setName(Name name)
  {
     this.name = name;
  }
} 

假设我为 Name 定义了一个类似的 POJO。现在我的问题是 PersonName 的 getter 是否可以返回 null 值或者它在幕后实例化?

我尝试在谷歌上搜索,但似乎 jackson 返回了不可为空字段的默认值,但没有提及结构会发生什么?

最佳答案

这取决于你用来解析的 json,即:

{
    "name": {
        "firstname": "abc",
        "lastname": "xyz"
    }
}

{
    "name": {
    }
}

上面的两个 JSON 都不会为 person.getName() 返回 null,即使节点内的字段丢失。但另一方面,如果您没有在 json 中传递节点 name,则 person.getName() 将始终返回 null。例如,此 JSON 将始终导致 person.getName() 为 null:

{
    "name": "abc"
}

关于java - Jackson中JSON结构对应的POJO可以为null吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36290709/

相关文章:

javascript - 如何使用 jquery .when 访问 json 数据以附加到页面?

php - Javascript、PHP json不会解析?

java - 使用 Jackson 的 @JsonTypeInfo 反序列化时如何保留类型属性?

Java并发访问ArrayList

java - 如何子串和提取动态内容

javascript - 如何通过 JSON 文件使用 JQUERY AJAX 填充 2 选择标签?

java - 在 Android 中使用 Jackson 的 JSONList 解析问题

java - 如何在android 10中检测全屏手势模式

java - Collectors.toMap 在与未用作值的对象不同的属性上编写合并函数

java - 使用 Jackson ObjectWriter 创建 ObjectNode