1

我有一个休息控制器返回一个 json 对象列表。当我调用方法 1) 时,它按要求工作。当我需要将序列化配置为忽略一个请求中的某些属性而不忽略另一个请求时,我使用的是 mixIn 注释和 objectMapper。当我返回对象时,它是 xml 而不是像以前那样的 json。有人可以帮忙吗?我意识到我现在正在返回一个字符串,但是如果我想要与 1) 相同的响应,我是否需要像以前一样将字符串转换为对象并在 responseEntity 中返回。

1)

@RequestMapping(value = "/search", method = RequestMethod.POST) 
public ResponseEntity<List<MyObject>> search(@RequestBody SearchParams searchParams){
  List<MyObject> result = myService.find(searchParams);
  return new ResponseEntity<List<MyObject>(result, HttpStatus.OK);
}

返回

[
  {"prop1":"val1", "prop2":"val2"},
  {"prop1":"val3", "prop2":"val4"}
]

2)

 @RequestMapping(value = "/search", method = RequestMethod.POST)
public ResponseEntity<String> search(@RequestBody SearchParams searchParams){  
  List<MyObject> result = myService.find(searchParams);
  ObjectMapper objectMapper = new ObjectMapper();
  objectMapper.getSerializationConfig().addMixInAnnotations(MyObject.class, MyObjectFilter.class);
  String json = objectMapper.writeValueAsString(result);
  return new ResponseEntity<String>(json, HttpStatus.OK);
}

返回

<data contentType="text/plain;charset=ISO-8859-1" contentLength="*"><![CDATA[
[
  {"prop1":"val1", "prop2":"val2"},
  {"prop1":"val3", "prop2":"val4"}
]
]]></data>

这出现在 soapui 的 xml 选项卡中,而不是 json 选项卡中。任何人都可以帮忙吗?

4

0 回答 0