Java後臺接收前端傳遞的陣列物件引數的處理

freshman2020發表於2020-10-12

之前有個需求,需要從前端向後臺傳遞一個物件,該物件裡不僅含有屬性,還包含了一個陣列
類似物件:

Object:{屬性1:'',屬性2:'',...,children:[{屬性3:''},{},...]}

這樣的一個物件。後臺使用一個一對多的實體類進行接收,但報錯。(前端使用的是es6,後臺使用springboot)
類似實體類:

public class Xxx1 {

    private String 屬性1;
    private String 屬性2;
    ...
    private List<Xxx2> children;
    }

百度了很多種方法:使用@RequestBody、@RequestParam、設定contentType等方法都不行。
最後使用轉換JSON的方法實現了引數的傳遞。
具體做法:
前端:
使用JSON.stringify()方法將其轉換為JSON字串

url: url,
data: { jsonStr: JSON.stringify(Object), },

最後得到的資料類似於:

{'屬性1':'''屬性2':'',...,'children':[{'屬性3':''},{''},...]}

後端:
controller方法:

@PostMapping(value = 'url',produces = "application/json")
public void upsertXxx(String jsonStr) {
	// 這裡使用的alibaba的fastjson包
	// 先將字串轉換為JSON物件
    JSONObject jsonObj = JSONObject.parseObject(jsonStr);
    // 使用toJavaObject()方法將其轉換為Xxx物件
    // Xxx物件中的list集合也會得到相應的值
    Xxx xxx= jsonObj.toJavaObject(Xxx.class);
	...
	// 業務實現
	...
}

相關文章