在与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
不匹配:
{
"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
..