【发布时间】:2018-04-29 16:16:31
【问题描述】:
我想用GSON在JAVA中解析一个JSON文件,文件格式如下:
{
"parcel":[
{
"firstName": "ABC",
"lastName": "LAST",
"email": "abc.LAST@g.com",
"country": "United States",
"dates": [
"2013-05-01",
"2014-05-07"
]
},
{
"firstName": "CVS",
"lastName": "Bad",
"email": "cvs.Bad@g.com",
"country": "Iceland",
"dates": [
"2010-04-30",
"2011-01-01",
]
}
]
}
而我在公共类中的主要方法是这样的:
public static void main(String[] args) throws IOException {
try(Reader reader = new InputStreamReader(JsonToJava.class.getResourceAsStream("input.json"), "UTF-8")){
Gson gson = new GsonBuilder().create();
Parcel p = gson.fromJson(reader, Parcel.class);
System.out.println(p);
}
}
以下是Parcel的代码:
public class Parcel {
Data data;
@Override
public String toString() {
return "Parcel [data=" + data + "]";
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
}
class Data{
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public Arrays[] getAvailableDates() {
return dates;
}
public void setAvailableDates(Arrays[] dates) {
this.dates = dates;
}
@Override
public String toString() {
return "Data [firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + ", country=" + country
+ ", dates=" + Arrays.toString(dates) + "]";
}
private String firstName;
private String lastName;
private String email;
private String country;
private Arrays[] dates;
}
但我似乎无法找到将所有变量值存储在列表中的正确方法。现在我得到的只是 Parcel[data = null]。
【问题讨论】:
-
确保您的 json 有效。好像无效。
-
我无法质疑 JSON 格式。尽管如此,有没有办法直接跳转到键并解析出其他垃圾?