jason有一个字符串字段为null,因此Jackson解析器抛出错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jason有一个字符串字段为null,因此Jackson解析器抛出错误相关的知识,希望对你有一定的参考价值。

REST API返回的JSON字符串为{\“Id \”:1,\“Name \”:\“Test1 \”,\“Description \”:\“Test1 description \”,\“ShowInMainScreen \”:true,\ “CREATEDATE \”:\ “2017-12-09T09:55:37 \”,\ “LASTUPDATEDATE \”:\ “2017-12-09T09:55:37 \”,\ “TrainingsCategories \”:空}

我对应的Java对象是

    public class TrainingData {
    @JsonProperty("Id")
    private int Id;
    @JsonProperty("Name")
    private String Name;
    @JsonProperty("Description")
    private String Description;
    @JsonProperty("ShowInMainScreen")
    private boolean ShowInMainScreen;
    @JsonProperty("CreateDate")
    private String CreateDate;
    @JsonProperty("LastUpdateDate")
    private String LastUpdateDate;
    @JsonProperty("TrainingsCategories")
    private String TrainingsCategories;

以下代码返回错误

    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,    false);
    trainingList = mapper.readValue(jsonStringNew, new TypeReference<List<TrainingData>>(){});

返回错误是因为TrainingsCategories具有null值。如果null是双引号,那么一切正常。但REST API不会返回带双引号的null。

答案

我认为您可以在类上使用以下注释来解决错误:

@JsonInclude(JsonInclude.Include.NON_NULL)

以我的一个java类为例,我可以在json字段中使用null值。

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Module {
  @JsonProperty("name")
        @XmlElement(name="name")
  private String name = null;

以上是关于jason有一个字符串字段为null,因此Jackson解析器抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

关于FastJSON对象转字符串,对象有字段为null会自动忽略

检查字段是否存在并且不为空

java字段值为null,转json后不存在该字段对应的key

执行立即更新返回 NULL 而非字符串查询工作正常

Kotlin set集合去重,获取元素可变set集合,set与list转换

Kotlin 可变集合与不可变集合的创建与转换