1
我有以下控制器代碼。springboot jackson返回數組而不是正確的json對象
@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就保持被定義爲下面
@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;
...
測試測試對象的列表(具有getter/setter方法和一些其他屬性),如下
private List<Test> objects;
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?
我們需要更多關於您的'Test'和'TestBean'類的信息。這些類中的任何一個是否包含Jackson註釋?數組序列化發生在使用'BeanAsArraySerializer'時,如果您有某些'@ JsonFormat'註釋可能會被激活。 – g00glen00b
儘管如此,由於您在'testId'字段中添加了@ JsonIgnore註解(除非響應中的數字不同),所以您的ID也在該數組中是非常奇怪的。 – g00glen00b
除了我已經提到的,Test類上沒有額外的註釋。 以下是TestBean唯一的註釋。 '@JsonPropertyOrder({「requestId」,「objects」}) public class TestBean extends ResourceSupport { – Divyesh