我在java spring中内置了一个api,它(使用jacksonjaxbjsonprovider 2.5.5)从这个类返回一个json对象:
public class FieldValues {
private String code;
private Object value;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
我的主要目标是
@JsonRootName(value = "WorkRequest")
@XmlRootElement(name = "WorkRequest")
@JsonIgnoreProperties(ignoreUnknown = true)
public class WorkRequestDTOResponse {
private List<FieldValues> fieldValues;
public List<FieldValues> getFieldValues() {
return fieldValues;
}
public void setFieldValues(List<FieldValues> fieldValues) {
this.fieldValues = fieldValues;
}
}
但是fieldvalues对象的输出是:
"fieldValues": [
{
"code": "anomaly",
"value": {
"@xsi.type": "ns3:boolean",
"$": "true"
}
},{
"code": "internal_note",
"value": {
"@xsi.type": "ns3:string",
"$": "Test text example"
}
}
]
相反,我需要的是:
"fieldValues": [
{
"code": "anomaly",
"value": true
},{
"code": "internal_note",
"value": "Test text example"
}
]
这是我的json提供程序:
public class ErmesJSONProvider extends JacksonJaxbJsonProvider {
public ErmesJSONProvider() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);
mapper.configure(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED, false);
_mapperConfig.setMapper(mapper);
_mapperConfig.getConfiguredMapper().setAnnotationIntrospector(new JacksonAnnotationIntrospector());
}
}
尝试使用字符串而不是对象:
public class FieldValues {
private String code;
private String value;
但如果我把这个值设为字符串 fieldValues.setValue("true")
,json输出为 "value": true
相反 "value": "true"
同样,如果我将这个值设置为string,但使用整数 fieldValues.setValue("1")
,json输出为 "value": 1
相反 "value": "1"
我不明白为什么?
有人能帮我吗?谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!