alibaba關於JSON的各種騷操作

拋出問題:controller接收復雜數據類型非常的不友好

  1. 初學者(我)只能造一個model實體類進行接收。
  2. 接基本類型數組非常麻煩,只能麻煩前端爸爸或者自己用逗號拼接字符串,再用split(",")切成數組
  3. 數據對象就別想了

註解解釋 

@RequestBody:

  • 百度說法 @RequestBody的作用其實是將json格式的數據轉爲java對象
  • 個人認爲 你想用json格式傳遞參數就得打註解啊,就像你要買豬肉就得買蓋戳的,不蓋戳的你接不到值也不敢買啊(話說今年豬肉是真的貴) 

@ResponseBody:

  • 百度說法 @ResponseBody的作用其實是將java對象轉爲json格式的數據
  • 個人認爲 好叭 我認爲他這兩句說的沒什麼卵用 接口項目必用@ResponseBody,沒什麼好說的。
  • tips:@Controller+@ResponseBody = @RestController

對於 Header: Content-Type application/json 的複雜結構一律用 @RequestBody JSONObject json 接收
希望有人別跟我槓 @RequestBody User user 這種 這裏討論是複雜數據類型,這種拿form-data可以解決的基本類型勿擾
下面進入正題:

正題

哎哎哎,正題在這呢,誰要入我啊,入入入。嗯~哼!(大家懂的)

對象 用JSONObject 

  • 基本常用的就是字符串和數字如下
String aaa =  json.getString("aaa");
		 Integer aaa1 =  json.getInteger("aaa1"); //包裝類可以接null
		 int aaa2 = json.getIntValue("aaa2");    //基本類型可以接初始化值
  • 但是重點是可以獲取對象裏邊的對象或者數組,就非常的方便
JSONObject a4 =  json.getJSONObject("aaa4");
JSONArray a3 =  json.getJSONArray("aaa3");

數組用 JSONArray 

  • JSONArray基本上就跟集合沒什麼區別,重點介紹
Object number = a3.get(0); //基本類型 [1,2,3,4]
JSONObject job =  a3.getJSONObject(0);//集合對象[{name:XXX,age:YYY},{},{}]

我自己常用的轉換 (這類轉換網上有許多,這裏就不一一詳解了)

  • 字符串轉JSONObject
String str1 = response1.body().string(); 
JSONObject userJson =JSONObject.parseObject(str1);
  • JSONObject 轉實體類
Jurisdiction jurisdiction = JSON.toJavaObject(userJson,Jurisdiction.class);
  • JSONObject 強轉Map
//測試1
@RequestMapping(value="Test1")
public Map<String, Object> Test1(@RequestBody JSONObject json) {
	Map<String, Object> map = json;
	return map;
}
  • JSONArray 轉 List<對象>

List<XXX> result = JSONObject.parseArray(jsonArray.toJSONString(), XXX.class);

如有不足之處,希望您不吝賜教,歡迎大家補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章