2015-05-03 127 views
-1

有問題我想從這裏特別http://api.sfpark.org/sfpark/rest/availabilityservice?response=json&pricing=yes解析GSON

數據分析這部分

RATES: { 
RS: [ 
     { 
      BEG: "12:00 AM", 
      END: "2:00 AM", 
      RATE: "0", 
      RQ: "No charge" 
     }, 
     { 
      BEG: "2:00 AM", 
      END: "6:00 AM", 
      RATE: "0", 
      RQ: "Str sweep" 
     }, 
     { 
      BEG: "6:00 AM", 
      END: "12:00 AM", 
      RATE: "0", 
      RQ: "No charge" 
     } 
    ] 
}, 

,我有這樣的代碼

if (dataObject.getAsJsonObject("RATES").isJsonObject()){ 
    JsonObject rates = dataObject.getAsJsonObject("RATES"); 
    if (rates.getAsJsonArray("RS").isJsonArray()){ 
     //parse stuff 
    } 
} 

我得到com.google.gson .JsonObject不能轉換爲com.google.gson.JsonArray在這裏

if (rates.getAsJsonArray("RS").isJsonArray()) 

,如果我改變,要

if (rates.getAsJsonObject("RS").isJsonObject()) 

我得到com.google.gson.JsonArray不能轉換到com.google.gson.JsonObject

+1

僅供參考,不使用GSON這裏。這是一個獨立的谷歌圖書館:https://sites.google.com/site/gson/gson-user-guide –

+0

來看,它通過調試器,但使用rates.get(「RS」),看看它返回什麼類型的元素 – faljbour

回答

0

正如你所指定的鏈接,你的API,你可以做到以下幾點:

首先,頭http://www.jsonschema2pojo.org/和轉儲你的API在那裏,它會產生必要的POJO類爲您服務。

設置網站的配置,以下內容:

enter image description here

根據您的API,它生成以下:

@Generated("org.jsonschema2pojo") 
public class Example { 

@Expose 
private String STATUS; 
@SerializedName("NUM_RECORDS") 
@Expose 
private String NUMRECORDS; 
@Expose 
private String MESSAGE; 
@SerializedName("AVAILABILITY_UPDATED_TIMESTAMP") 
@Expose 
private String AVAILABILITYUPDATEDTIMESTAMP; 
@SerializedName("AVAILABILITY_REQUEST_TIMESTAMP") 
@Expose 
private String AVAILABILITYREQUESTTIMESTAMP; 
@Expose 
private List<com.example.AVL> AVL = new ArrayList<com.example.AVL>(); 

/** 
* 
* @return 
* The STATUS 
*/ 
public String getSTATUS() { 
return STATUS; 
} 

/** 
* 
* @param STATUS 
* The STATUS 
*/ 
public void setSTATUS(String STATUS) { 
this.STATUS = STATUS; 
} 

/** 
* 
* @return 
* The NUMRECORDS 
*/ 
public String getNUMRECORDS() { 
return NUMRECORDS; 
} 

/** 
* 
* @param NUMRECORDS 
* The NUM_RECORDS 
*/ 
public void setNUMRECORDS(String NUMRECORDS) { 
this.NUMRECORDS = NUMRECORDS; 
} 

/** 
* 
* @return 
* The MESSAGE 
*/ 
public String getMESSAGE() { 
return MESSAGE; 
} 

/** 
* 
* @param MESSAGE 
* The MESSAGE 
*/ 
public void setMESSAGE(String MESSAGE) { 
this.MESSAGE = MESSAGE; 
} 

/** 
* 
* @return 
* The AVAILABILITYUPDATEDTIMESTAMP 
*/ 
public String getAVAILABILITYUPDATEDTIMESTAMP() { 
return AVAILABILITYUPDATEDTIMESTAMP; 
} 

/** 
* 
* @param AVAILABILITYUPDATEDTIMESTAMP 
* The AVAILABILITY_UPDATED_TIMESTAMP 
*/ 
public void setAVAILABILITYUPDATEDTIMESTAMP(String AVAILABILITYUPDATEDTIMESTAMP) { 
this.AVAILABILITYUPDATEDTIMESTAMP = AVAILABILITYUPDATEDTIMESTAMP; 
} 

/** 
* 
* @return 
* The AVAILABILITYREQUESTTIMESTAMP 
*/ 
public String getAVAILABILITYREQUESTTIMESTAMP() { 
return AVAILABILITYREQUESTTIMESTAMP; 
} 

/** 
* 
* @param AVAILABILITYREQUESTTIMESTAMP 
* The AVAILABILITY_REQUEST_TIMESTAMP 
*/ 
public void setAVAILABILITYREQUESTTIMESTAMP(String AVAILABILITYREQUESTTIMESTAMP) { 
this.AVAILABILITYREQUESTTIMESTAMP = AVAILABILITYREQUESTTIMESTAMP; 
} 

/** 
* 
* @return 
* The AVL 
*/ 
public List<com.example.AVL> getAVL() { 
return AVL; 
} 

/** 
* 
* @param AVL 
* The AVL 
*/ 
public void setAVL(List<com.example.AVL> AVL) { 
this.AVL = AVL; 
} 

} 

接下來,請執行下列操作:

Gson gson = new Gson(); 
Example example = gson.fromJson(response, Example.class); 

這裏的反應是你得到的網絡響應。

這事與API請求打交道時,我定期做。我希望這可以幫助你太:)