我正在尝试解析来自http://api.sfpark.org/sfpark/rest/availabilityservice?response=json&pricing=yes
的数据特别是这部分
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
答案 0 :(得分:0)
由于您已指定API的链接,因此您可以执行以下操作:
首先,前往http://www.jsonschema2pojo.org/并将API转储到那里,它将为您生成必要的POJO课程。
将网站的配置设置为以下内容:
根据您的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请求时定期执行的操作。我希望这也可以帮助你:)