经过一周的头痛后,我在这里寻求你的帮助:S
我需要使用Jackson
反序列化此JSON输出{
"data": [
{
"id": "142065955831788",
"name": "Name1",
"link": "http://www.somelink.com",
},
{
"id": "160212467350470",
"name": "Name2",
"link": "http://www.somelink2.com",
}
.
.
.
}
我发誓我已尝试过任何东西,但我无法让杰克逊反序列化那个JSON。
我错过了什么?
编辑:
我创建了一个这样的类:
Data.class
@JsonIgnoreProperties(ignoreUnknown = true)
public class Data{
@JsonProperty("data")
private String name;
@JsonProperty("data")
private String link;
//Getters + Setters
这是我的映射代码
ObjectMapper mObjectMapper = new ObjectMapper();
ArrayList<Data> mDataList;
mDataList = mObjectMapper.readValue(
url, /* The url returning the JSON */
mObjectMapper.getTypeFactory().constructCollectionType(
ArrayList.class, Data.class
)
);
我收到此错误消息:
无法从START_OBJECT标记中反序列化java.util.ArrayList的实例
答案 0 :(得分:0)
这是代码 -
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.map.ObjectMapper;
@JsonIgnoreProperties(ignoreUnknown = true)
class data {
@JsonProperty("id")
private String id ;
@JsonProperty("name")
private String name ;
@JsonProperty("link")
private String link;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
}
public class aa {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
try {
data[] d = mapper.readValue(
"[{\"id\":\"142065955831788\",\"name\":\"Name1\",\"link\":\"http://www.somelink.com\"},{\"id\":\"160212467350470\",\"name\":\"Name2\",\"link\":\"http://www.somelink2.com\"}]",
data[].class);
for (data data1 : d) {
System.out.println("-----");
System.out.println("Id : "+data1.getId());
System.out.println("Name : "+data1.getName());
System.out.println("Link : "+data1.getLink());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
您的JSON也需要更改。它不应包含数据部分,因为您正在使用其属性数组。
输出 -
-----
Id : 142065955831788
Name : Name1
Link : http://www.somelink.com
-----
Id : 160212467350470
Name : Name2
Link : http://www.somelink2.com