我是一个应用程序,我使用jackson解析json输出(我使用spring for android来进行http REST调用)。
这是以下REST调用的输出:
https://api.spreaker.com/v2/users/7725967/episodes?limit=1
{
"response":{
"items":[
{
"episode_id":9074409,
"type":"RECORDED",
"title":"Seerah",
"duration":4608260,
"show_id":1530711,
"author_id":7725967,
"site_url":"https:\/\/www.spreaker.com\/episode\/9074409",
"image_url":"https:\/\/d1bm3dmew779uf.cloudfront.net\/large\/4c3b84b16338c57af8500fea88ef5313.jpg",
"image_original_url":"https:\/\/d3wo5wojvuv7l.cloudfront.net\/images.spreaker.com\/original\/4c3b84b16338c57af8500fea88ef5313.jpg",
"published_at":"2016-07-28 01:07:18",
"download_enabled":true,
"waveform_url":"https:\/\/d3770qakewhkht.cloudfront.net\/episode_9074409.gz.json?v=2GDXyK"
}
],
"next_url":"https:\/\/api.spreaker.com\/v2\/users\/7725967\/episodes?filter=listenable&last_id=9074409&limit=1"
}
}
在我的应用程序中,我进行了以下休息调用(这是代码):
public class HttpRequestTask extends AsyncTask<Void, Void, RadioInfo> {
@Override
protected RadioInfo doInBackground(Void... params) {
try {
final String url = "https://api.spreaker.com/v2/users/7725967/episodes?limit=1";
RestTemplate restTemplate = new RestTemplate();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
//String result = String.valueOf(restTemplate.getForObject(url, RadioInfo.class));
return restTemplate.getForObject(url, RadioInfo.class);
} catch (Exception e) {
Log.e("MainActivity", e.getMessage(), e);
}
return null;
}
我得到的错误如下:
Could not read JSON: Unrecognized field "response" (class software.blackstone.masjidtawheedmobileradio.RadioInfo), not marked as ignorable (3 known properties: "title", "type", "episode_id"])
at [Source: buffer(com.android.okhttp.okio.GzipSource@1058630).inputStream(); line: 1, column: 14] (through reference chain: software.blackstone.masjidtawheedmobileradio.RadioInfo["response"]); nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "response" (class software.blackstone.masjidtawheedmobileradio.RadioInfo), not marked as ignorable (3 known properties: "title", "type", "episode_id"])
at [Source: buffer(com.android.okhttp.okio.GzipSource@1058630).inputStream(); line: 1, column: 14] (through reference chain: software.blackstone.masjidtawheedmobileradio.RadioInfo["response"])
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "response" (class software.blackstone.masjidtawheedmobileradio.RadioInfo), not marked as ignorable (3 known properties: "title", "type", "episode_id"])
at [Source: buffer(com.android.okhttp.okio.GzipSource@1058630).inputStream(); line: 1, column: 14] (through reference chain: software.blackstone.masjidtawheedmobileradio.RadioInfo["response"]); nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "response" (class software.blackstone.masjidtawheedmobileradio.RadioInfo), not marked as ignorable (3 known properties: "title", "type", "episode_id"])
at [Source: buffer(com.android.okhttp.okio.GzipSource@1058630).inputStream(); line: 1, column: 14] (through reference chain: software.blackstone.masjidtawheedmobileradio.RadioInfo["response"])
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readInternal(MappingJackson2HttpMessageConverter.java:126)
at org.springframework.http.converter.AbstractHttpMessageConverter.read(AbstractHttpMessageConverter.java:147)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:76)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:484)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:439)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:237)
at software.blackstone.masjidtawheedmobileradio.MainActivity$HttpRequestTask.doInBackground(MainActivity.java:180)
at software.blackstone.masjidtawheedmobileradio.MainActivity$HttpRequestTask.doInBackground(MainActivity.java:170)
我该如何解决这个问题?
更新:
这是RadioInfo类:
公共类RadioInfo {private String episode_id;
private String type;
private String title;
public String getId() {
return this.episode_id;
}
public String getType() {
return this.type;
}
public String getTitle() {
return this.title;
}
}
答案 0 :(得分:1)
根据您的JSON,您的POJO课程应为:
public class RadioInfo {
private Response response;
// getters setters
}
public class Item {
private Integer episodeId;
private String type;
private String title;
//getter setters
}
public class Response {
private List<Item> items = new ArrayList<Item>();
private String nextUrl;
//getters setters
}
答案 1 :(得分:0)
正如我所见,您正试图将JSONObject
命名为 - &#34;回复&#34;
&#34;响应&#34;是JSONArray
。您的JSONObject
名称是&#34;项目&#34;。