【问题标题】:Exception in thread "main": Unrecognized field线程“main”中的异常:无法识别的字段
【发布时间】:2014-05-12 18:13:42
【问题描述】:

在解决了我的 java 代码中的错误并解决了它们之后,我终于进入了运行阶段,但是在运行它之后我得到了一个异常错误。 我正在尝试使用杰克逊库将 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”(weather.data.City 类),未标记为可忽略(5 个已知属性:、“coord”、“country”、 "id", "name", "population"])

任何帮助将不胜感激。

【问题讨论】:

  • 你的城市类中没有名为cod的字段
  • 问题是我使用 jsongen 来生成我的 bean,它是错误地生成的。现在我完全改变了我的豆子,但我仍然面临错误。所以我认为我的 bean 做错了什么。

标签: java json exception jackson


【解决方案1】:

我认为这个例子会对你有所帮助

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

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

【讨论】:

    【解决方案2】:

    您的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..

    【讨论】:

    • 谢谢,帮了大忙
    • 我写了另一个课程,包括@harsh 所说的内容:cod、message、city、cnt 和 list。但我收到一个新错误:线程“主”com.fasterxml.jackson.databind.JsonMappingException 中的异常:无法从 START_ARRAY 令牌中反序列化 weather.data.list1 的实例
    猜你喜欢
    • 2019-04-06
    • 2020-10-30
    • 1970-01-01
    • 2017-11-14
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多