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

时间:2014-05-12 18:13:43

标签: java json exception jackson

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

我的代码如下:

我的getter和setter样本:City.java

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.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段" cod" (class weather.data.City),未标记为可忽略(5个已知属性:," coord"," country"," id","姓名","人口"])

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

我认为这个例子可以帮助你

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

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

答案 1 :(得分:0)

您的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类虽然没问题,但您需要创建另一个具有codmessagecitycntlist属性的类其中city属性的类型应为City

其他(不干净的)替代可能是添加这些属性并设置它们@Ignore ..