在我的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","姓名","人口"])
任何帮助都将受到高度赞赏。
答案 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
类虽然没问题,但您需要创建另一个具有cod
,message
,city
,cnt
和list
属性的类其中city
属性的类型应为City
。
其他(不干净的)替代可能是添加这些属性并设置它们@Ignore
..