【问题标题】:How to solve NULL pointer error when using Jackson 1.x使用 Jackson 1.x 时如何解决 NULL 指针错误
【发布时间】:2020-10-20 08:44:56
【问题描述】:

我使用 API 来请求数据。对于一个请求,当我尝试将值设置为 int 时收到 NULL 指针异常。

public class Player implements Serializable  {
...
...
...
...
   @JsonProperty("offsides")
    private Integer offsides;
...
...

    @JsonProperty("offsides")
    public Integer getOffsides() {
        return offsides;
    }

    @JsonProperty("offsides")
    public void setOffsides(Integer offsides) {
        this.offsides = offsides;
    }

...

public class Fixtures {
private final static long serialVersionUID = 2571183788260356219L;
        public static void main(String args[]) throws Exception  {

            ObjectMapper mapper = new ObjectMapper();
            ...
            ...
            ...
            FixtureJSONMapp fixturesFixtures = mapper.readValue(fixturesFile, FixtureJSONMapp.class);

           List<String> insertStatus = FixturesFixturesInsert.insertAllFixtures(fixturesFixtures, 
           statsNumb, playersNumb, eventsNumb, lineupsNumb);
        }
}

...

public class FixturesFixturesInsert {
    
    public static List<String> insertAllFixtures(FixtureJSONMapp fixturesFixtures, int statsNumb, int playersNumb, int eventsNumb, int lineupsNumb) throws Exception    {
            try {
            
            Connection con = dbConnector.ConnectToDB();
            PreparedStatement pstmtFixtures = con.prepareStatement(".....");

            for(int i = 0; i < fixturesFixtures.getApi().getFixtures().size(); i++) {

            ...
            ...
            ...
            ...
            int offsides = fixturesFixtures.getApi().getFixtures().get(i).getPlayers().get(j).getOffsides();
            ...
            }
   }

在这种情况下,我得到了一个 NULL 指针异常。我可以解决 int offsides = (fixtures....getOffsides() != null ? getOffsides() : 0); 但我认为我应该能够使用 mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL);或类似的东西,但我无法让它工作。我想将此设置设置为更全球化,因为我将不得不在很多地方这样做。

如果我收到的 JSON 字符串中的值为 NULL,我想将值设置为 0。这可能吗? 正如主题中提到的,我使用 Jackson 1.x (org.codehaus.jackson)

【问题讨论】:

    标签: java serialization jackson


    【解决方案1】:

    首先确保setSerializationInclusion(...) 应用于传入数据。我不这么认为,它对你即将发送的数据生效。

    注意:

    1. 即使它有效,您仍试图访问 null 并将其分配给一个原语。
    2. NullPointerException 告诉您在 null 对象上调用 getOffsides()。即null.getOffsides()
    3. 如果您至少使用 Java 8,则可以使用 Optional.ofNullableint offsides 设置为 0,只要它是 null

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 2022-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多