线程"main"中的异常:无法识别的字段



在与java代码中的错误进行斗争并解决它们之后,我终于进入了运行阶段,但是在运行后我得到了一个异常错误。我试图将json从天气API转换为使用杰克逊库的java对象。我有几个类用于设置和获取java对象,包括:City.java、cord .java、List1.java、Temp.java、Weather.java。我有一个名为usertest.java的类,用于将对象映射为测试。

我的代码如下:

getter和setter的示例:

package weather.data;
//import java.util.List;
public class City{
    private Coord coord;
    private String country;
    private Number id;
    private String name;
    private Number population;
    ...
    //getters and setters
}

usertest.java

package weather.data;
import weather.data.City;
import weather.data.Coord;
import weather.data.list1;
import weather.data.Temp;
import weather.data.Weather;
import com.fasterxml.jackson.core.JsonParseException;
//import com.fasterxml.jackson.annotation.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonMappingException;
import java.io.File;
import java.net.URL;
import java.io.IOException;
public class usertest {
    public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException 
    {
        URL jsonUri = new URL("https://gist.githubusercontent.com/anonymous/4b32c7ef1ceb5dd48bf5/raw/ef1987551faa3fb61473bb0e7aad70a228dc36d6/gistfile1.txt");
        ObjectMapper mapper = new ObjectMapper();

        City city = mapper.readValue(jsonUri, City.class);
        System.out.println(city.getCoord());
    }
}

和错误后,我得到运行代码:线程"main" com.fasterxml. jacksondatabind.ec . unrecognizedpropertyexception:未识别字段"cod"(类weather.data.City),未标记为可忽略(5个已知属性:,"coord", "country", "id", "name", "population"])

任何帮助将非常感激。

我想这个例子会对你有所帮助。

  • http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

需要为整个响应映射一个类。所以你需要有一个类与下一个字段:

class Response {
    String cod 
    int message
    City city
    ...
}

您的json表示与City.java不匹配:

json:

{
    "cod": "200",
    "message": 0.0035,
    "city": {
        "id": 1851632,
        "name": "Shuzenji",
        "coord": {
            "lon": 138.933334,
            "lat": 34.966671
        },
        "country": "JP",
        "population": 0
    },
    "cnt": 10,
    "list": [..]
   }

City类虽然很好,但您需要创建另一个具有cod, message, city, cntlist属性的类,其中city属性应该是City类型。

其他(不干净的)替代方法可以添加这些属性并将它们设置为@Ignore ..

最新更新