2
{
"status_code": 200,
"status_text": "Success",
"count": 96,
"data": [
{
"model": "Spark",
"fuel_type": "",
"price": "352109",
"state": "",
"city": "Agartala",
"crawl_date": "2013-10-02 05:00:02",
"make": "Chevrolet",
"variant": "New Spark 1.0 BS4 OBDII"
},
{
"model": "Spark",
"fuel_type": "",
"price": "378914",
"state": "",
"city": "Agartala",
"crawl_date": "2013-10-02 05:00:03",
"make": "Chevrolet",
"variant": "New Spark 1.0 LS BS4 OBDII"
}
]
}
以上是JSON字符串。Gson fromJson解析嵌套json
的等價類的JSON對象如下:
CarPriceResult cpr;
List<CarData> cd;
cpr = gson.fromJson(inputLine, CarPriceResult.class);
cd = cpr.getCarData();
對象 「CD」 返回null,因此:
public class CarPriceResult {
private int status_code;
private String status_text;
private int count;
private List<CarData> CarData;
public CarPriceResult() {
super();
}
public int getStatus_code() {
return status_code;
}
public void setStatus_code(int status_code) {
this.status_code = status_code;
}
public String getStatus_text() {
return status_text;
}
public void setStatus_text(String status_text) {
this.status_text = status_text;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public List<CarData> getCarData() {
return this.CarData;
}
public void setCarData(List<CarData> carData) {
this.CarData = carData;
}
public static class CarData {
private String model;
private String fuel_type;
private String state;
private String city;
private String crawl_date;
private String make;
private String variant;
public String getModel() {
return model;
}
public CarData() {
super();
}
public void setModel(String model) {
this.model = model;
}
public String getFuel_type() {
return fuel_type;
}
public void setFuel_type(String fuel_type) {
this.fuel_type = fuel_type;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCrawl_date() {
return crawl_date;
}
public void setCrawl_date(String crawl_date) {
this.crawl_date = crawl_date;
}
public String getMake() {
return make;
}
public void setMake(String make) {
this.make = make;
}
public String getVariant() {
return variant;
}
public void setVariant(String variant) {
this.variant = variant;
}
}
}
該代碼使用GSON是如下JSON轉換成Java NPE被拋出。
我做錯了什麼?
這仍然沒有幫助我,就像你提到的後,我硬編碼 「海峽」。 CarData仍顯示爲空。 inputLine是使用reader從http數據API中檢索的。 'code'BufferedReader in = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); \t \t \t \t String inputLine = in.readLine(); – user2867209
@ user2867209答案編輯 – Ilya
我的英雄,這是你指出的「數據」的問題。由於害怕學習JSON + GAE(PaaS)+ Gson + APIHub,我失去了你正確指出的那些小事。萬分感謝! – user2867209