Java 使用Jackson 1.x时如何解决空指针错误

Java 使用Jackson 1.x时如何解决空指针错误,java,serialization,jackson,Java,Serialization,Jackson,我使用一个API来请求数据。对于一个请求,当我尝试将值设置为int时,我收到一个空指针异常 public class Player implements Serializable { ... ... ... ... @JsonProperty("offsides") private Integer offsides; ... ... @JsonProperty("offsides") public Integer getO

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

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;
    }

公共类装置{
私有最终静态长serialVersionUID=2571183788260356219L;
公共静态void main(字符串args[])引发异常{
ObjectMapper mapper=新的ObjectMapper();
...
...
...
FixtureJSONMapp fixturesFixtures=mapper.readValue(fixturesFile,FixtureJSONMapp.class);
List insertStatus=FixturesFixturesInsert.insertAllFixtures(fixturesFixtures,
statsNumb、PlayerNumb、eventsNumb、lineupsNumb);
}
}

public类FixturesFixturesInsert{
公共静态列表insertAllFixtures(FixtureJSONMapp fixturesFixtures、int statsNumb、int PlayerNumb、int EventsUMB、int lineupsNumb)引发异常{
试一试{
Connection con=dbConnector.ConnectToDB();
PreparedStatement PSTMFixtures=con.prepareStatement(“…”);
对于(int i=0;i
在这种情况下,对于“int offsides”,我得到一个空指针异常 int offsides=(fixtures….getOffsides()!=null?getOffsides():0); 但我认为我应该能够使用mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL)或类似的东西,但我无法让它工作。我想将此设置设置为更全局的,因为我必须在许多地方进行设置

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

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

注:

  • 即使它可以工作,您也要尝试访问
    null
    ,并将其分配给原语
  • NullPointerException
    告诉您正在对
    null
    对象调用
    getOffsides()
    。即
    null.getOffsides()
  • 如果您至少使用Java 8,则可以使用
    Optional.ofNullable
    int offsides
    设置为
    0
    ,只要
    null
  • 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();
                ...
                }
       }