我正在尝试编写一个将天气API json导入java的项目,但是我遇到了冲突错误。在下面你可以看到我需要为它生成java对象的json的一部分,它需要是一个列表对象类。首先,我真的很困惑如何将一个对象类编写为一个列表(我搜索了这个问题,但没有答案或教程对我来说足够精确),其次是该类的名称应该是"列表"匹配json(据我所知)与import java.util.List;
产生冲突"list": [
{
"dt": 1399950000,
"main": {
"temp": 287.82,
"temp_min": 287.82,
"temp_max": 287.82,
"pressure": 923.74,
"sea_level": 1018.93,
"grnd_level": 923.74,
"humidity": 100,
"temp_kf": 0
},
"weather": [
{
"id": 501,
"main": "Rain",
"description": "moderate rain",
"icon": "10d"
}
],
"clouds": {
"all": 92
},
"wind": {
"speed": 0.51,
"deg": 226.005
},
"rain": {
"3h": 6
},
"sys": {
"pod": "d"
},
"dt_txt": "2014-05-13 03:00:00"
},
{
"dt": 1399960800,
"main": {
"temp": 291.36,
"temp_min": 291.358,
"temp_max": 291.36,
"pressure": 921.65,
"sea_level": 1016.09,
"grnd_level": 921.65,
"humidity": 87,
"temp_kf": 0
},
"weather": [
{
"id": 500,
"main": "Rain",
"description": "light rain",
"icon": "10d"
}
],
"clouds": {
"all": 20
},
"wind": {
"speed": 0.87,
"deg": 12.0018
},
"rain": {
"3h": 0.5
},
"sys": {
"pod": "d"
},
正如你在json中看到的,我有一个列表对象,我需要将它映射到java对象。带有list对象的java类如下:
package weather.data;
import java.util.ArrayList;
import java.util.List;
public class List{
List list = new ArrayList();
private Main main;
private Clouds clouds;
private Number dt;
private Weather weather;
private Wind wind;
private Rain rain;
private Sys sys;
private String dt_txt;
public Main getMain(){
return this.main;
}
public void setMain(Main main){
this.main = main;
}
...
//The rest of setters and getters
}
我在import java.util.List前面遇到此错误:import java.util.List与同一文件中定义的类型冲突 并且List list = new ArrayList(); 此行有多个标记 - ArrayList是原始类型。应该是对泛型类型ArrayList的引用 参数 - 类型不匹配:无法从ArrayList转换为List - 无法将ArrayList解析为类型
我还尝试将对象的名称更改为list1,但是当我尝试运行代码时,我遇到了另一个错误:线程中的异常" main" com.fasterxml.jackson.databind.JsonMappingException:无法在[来源:https://gist.githubusercontent.com/anonymous/4b32c7ef1ceb5dd48bf5/raw/ef1987551faa3fb61473bb0e7aad70a228dc36d6/gistfile1.txt的START_ARRAY标记中反序列化weather.data.list1的实例。 line:15,column:14](通过参考链:weather.data.Jweather [" list"])at ...
任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
您的名为List
的班级正在遮蔽java.util.List
,因此您的字段属于此类的类型;这就是编译器告诉你的。避免将类命名为与核心API类相同的简单名称,并在集合上使用通用参数。
答案 1 :(得分:0)
您似乎正在尝试实施自己的链接列表类。最好只使用JDK中的LinkedList
类,如果这是您想要的功能,并且有一个Readings
类(或Weather
,或者任何名称对于你存储所有的数字,温度等等,但不是" next"列表的节点。
答案 2 :(得分:0)
请更改您的班级名称并运行它将正常工作,因为您的班级名称和列表名称相同,您将收到该错误。
答案 3 :(得分:-1)
您的课程名称为List
,而jre在您导入的java.util.List
中有自己的班级列表。
更改类的名称,它不能是任何java的API名称