springboot jackson返回数组而不是正确的json对象

时间:2016-06-21 21:17:31

标签: json spring-boot jackson output

我有以下控制器代码。

@RequestMapping(value = "/testService/test", produces = MediaType.APPLICATION_JSON_VALUE)
public HttpEntity<TestBean> test(@RequestParam Map<String,String> testReq)     {
...
List<Test> objList=testRepository.test();
testBean.setObjects(objList);
...
return new ResponseEntity<TestBean>(testBean, HttpStatus.OK);
}

TestBean包含一个Test对象列表(包含getter / setter和其他一些属性),如下所示

private List<Test> objects;

测试类定义如下

@Entity
@Table(name="TEST")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Test implements Serializable{
private static final long serialVersionUID = -5319848003675140194L;
@JsonIgnore
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="TEST_ID")
Integer testId;
...

test()方法定义如下。

@Query(value="SELECT ...", nativeQuery=true)
List<Test> test();

我看到的json输出如下

{"requestId":"testRequestId","objects":[[1,"Test name"],[2,"Test name2"]],"status":"Success"}

其他事情还可以,我的问题是为什么对象列表以这种方式输出而不是像这样

{"testId":1,"testName":"Test name"}

对于我正在使用的其他类似对象,我看到了预期的输出(以适当的json格式)。

请注意,我没有复制实际代码,但键入了更改名称的代码,因此请忽略您在代码中看到的任何语法错误。

有人可以告诉我如何在输出中获得正确的json?

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题。问题是我使用的是为不同对象创建的JPA存储库类。 我为Test对象创建了一个新的JPA存储库类,它现在工作正常,我正确地形成了json输出。 感谢