将json URL导入java并使用jackson库对其进行解析
我试图读取java中的json链接并对其进行解析,以便将其用于其他事务,但问题是,我遇到了一些错误,我真的不知道如何处理这些错误。 代码如下:将json URL导入java并使用jackson库对其进行解析,java,json,jackson,Java,Json,Jackson,我试图读取java中的json链接并对其进行解析,以便将其用于其他事务,但问题是,我遇到了一些错误,我真的不知道如何处理这些错误。 代码如下: package weather.data; import weather.data; import com.fasterxml.jackson.core.JsonParseException; //import com.fasterxml.jackson.annotation.JsonMappingException; import com.fast
package weather.data;
import weather.data;
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.URI;
import java.io.IOException;
public class usertest {
public static void main() throws JsonParseException, JsonMappingException, IOException
{
URI jsonUrl = new URI("https://gist.githubusercontent.com/anonymous/4b32c7ef1ceb5dd48bf5/raw/ef1987551faa3fb61473bb0e7aad70a228dc36d6/gistfile1.txt");
ObjectMapper mapper = new ObjectMapper();
City = mapper.readValue(jsonUrl, data.class);
}
}
以下是错误:
关于导入天气。数据:此行有多个标记
-只能导入类型。weather.data解析为
包裹
-从不使用导入weather.data
about City=mapper.readValue(jsonUrl,data.class):此行有多个标记
-无法将数据解析为类型
-无法将城市解析为变量
-类型ObjectMapper中的方法readValue(JsonParser,Class)不适用于
参数(URI,类)
-类型ObjectMapper中的方法readValue(JsonParser,Class)不适用于
参数(URI,类)
-无法将城市解析为变量
-无法将数据解析为类型
有什么想法吗?另外,我真的不理解使用mapper.readValue的概念。有人能帮我吗
注意:我已经使用json gen在链接中生成了数据对象,现在我有了对象数据java文件:City、Coord、List1、Temp和Weather,内容如下
以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;
public Coord getCoord(){
return this.coord;
}
public void setCoord(Coord coord){
this.coord = coord;
}
public String getCountry(){
return this.country;
}
public void setCountry(String country){
this.country = country;
}
public Number getId(){
return this.id;
}
public void setId(Number id){
this.id = id;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public Number getPopulation(){
return this.population;
}
public void setPopulation(Number population){
this.population = population;
}
}
提前感谢如果URL中的
gistfile1.txt
文件包含City的JSON对象,则替换该行
City = mapper.readValue(jsonUrl, data.class);
与
您应该将对象类赋予
readValue
方法。您需要导入weather.data.City
(特定类),而不是导入weather.data
(包)
然后按照@jdiver说的做:
City city = mapper.readValue(jsonUrl, City.class);
非常感谢@jdiver。我应用了您所说的,但它仍然给了我这个错误:此行有多个标记-类型ObjectMapper中的方法readValue(JsonParser,Class)不适用于参数(URI,Class)-类型ObjectMapper中的方法readValue(JsonParser,Class)不适用于参数(URI,Class)非常感谢@jcragun。我应用了您所说的关于导入的第一个错误消失了,但对于第二个代码,它仍然给我这个错误:此行有多个标记-类型ObjectMapper中的方法readValue(JsonParser,Class)不适用于参数(URI,Class)-方法readValue(JsonParser,Class)在类型中,ObjectMapper不适用于参数(URI,类),请使用
java.net.URL
而不是URI
类。很抱歉回答得太晚。我的文件中已经有了java.net.URI.UR L而不是iohh,这是一个愚蠢的错误。非常感谢你。成功了。
City city = mapper.readValue(jsonUrl, City.class);