我使用Spring for Android来解析我的Json。
但我最近有这个错误:
找不到合适的HttpMessageConverter用于响应类型[... request.Temp]和内容类型[application / json]
即使我使用能够处理application / json的MappingJackson2HttpMessageConverter
这是我的请求代码:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.setAcceptEncoding(ContentCodingType.GZIP);
MultiValueMap<String, String> map=getParameters();
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(map, headers);
RestTemplate template=getRestTemplate();
template.setErrorHandler(new MyDefaultReponseErrorHandler());
/* I also tried it
MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter();
List<MediaType> mediaTypeList=new ArrayList<>();
mediaTypeList.add(new MediaType("application", "json"));
converter.setSupportedMediaTypes(mediaTypeList);
*/
List<HttpMessageConverter<?>> converterList=new ArrayList<>();
converterList.add(new FormHttpMessageConverter());
//converterList.add(converter);
converterList.add(new MappingJackson2HttpMessageConverter());
template.setMessageConverters(converterList);
return template.postForObject(endPoint, entity, clazz);
我尝试解析的对象:
{
"error": null,
"result": [
{ .. some fields .. }
]
}
使用:
@JsonIgnoreProperties(ignoreUnknown=true)
@JsonAutoDetect(fieldVisibility= JsonAutoDetect.Visibility.NONE)
public class Temp {
private int error;
private ArrayList<Search> arrayList;
public int getError() {
return error;
}
@JsonProperty("error")
public void setError(int error) {
this.error = error;
}
public ArrayList<Search> getArrayList() {
return arrayList;
}
@JsonProperty("result")
public void setArrayList(ArrayList<Search> arrayList) {
this.arrayList = arrayList;
}
}
使用WebService的其他功能(没有数组)这项工作。
当我用以下结果解析结果时,我发现另一件事很奇怪:
@JsonProperty("result")
public void setResult(String string) {
}
我有解析错误。这是正常的,字符串不同的数组,但至少他试图解析。
那么,一个想法?
PS:我尝试使用数组进行解析的另一个函数,它可以正常工作
答案 0 :(得分:0)
好的,我发现了这个错误,它来自我的对象搜索(对于我的搜索数组):
@JsonProperty("start_date")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
@JsonProperty("start_date")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
我使用过两次“start_date”,错误信息并不是真的明确......